빠르게 원을 그리며 이미지를 설정하는 방법
i circle 사진을 swift로 어떻게 만들 수 있습니까?
내 보기 컨트롤러:
import UIKit
import Foundation
class FriendsViewController : UIViewController{
@IBOutlet weak var profilPicture: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
profilPicture = UIImageView(frame: CGRectMake(0, 0, 100, 100))
}
}
나의profilPicture = UIImageView(frame: CGRectMake(0, 0, 100, 100))
아무 것도 하지 않습니다.
예: http://www.appcoda.com/ios-programming-circular-image-calayer/
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var image: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
image.layer.borderWidth = 1
image.layer.masksToBounds = false
image.layer.borderColor = UIColor.black.cgColor
image.layer.cornerRadius = image.frame.height/2
image.clipsToBounds = true
}
연장을 원하신다면
import UIKit
extension UIImageView {
func makeRounded() {
layer.borderWidth = 1
layer.masksToBounds = false
layer.borderColor = UIColor.black.cgColor
layer.cornerRadius = self.frame.height / 2
clipsToBounds = true
}
}
그게 당신이 필요로 하는 전부입니다.
확장명을 간단하게 작성할 수 있습니다.
import UIKit
extension UIImageView {
func setRounded() {
let radius = CGRectGetWidth(self.frame) / 2
self.layer.cornerRadius = radius
self.layer.masksToBounds = true
}
}
다음과 같이 사용합니다.
imageView.setRounded()
@DanielQ의 답변을 기반으로 합니다.
스위프트 4와 스위프트 3
import UIKit
extension UIImageView {
func setRounded() {
self.layer.cornerRadius = (self.frame.width / 2) //instead of let radius = CGRectGetWidth(self.frame) / 2
self.layer.masksToBounds = true
}
}
어디서나 사용할 수 있습니다.ViewController
포함:
imageView.setRounded()
Swift에서 UIImageView를 원형으로 만들고 싶다면 다음 코드를 사용하면 됩니다.
imageView.layer.cornerRadius = imageView.frame.height / 2
imageView.clipsToBounds = true
이것이 누군가에게 도움이 되는지는 모르겠지만, 저는 한동안 이 문제와 씨름하고 있었지만, 온라인에서 어떤 대답도 저에게 도움이 되지 않았습니다.저에게 문제는 스토리보드의 이미지에 설정된 높이와 너비가 다르다는 것이었습니다.스택에 있는 모든 솔루션을 시도해 봤는데, 결과적으로 그렇게 간단했습니다.두 가지를 모두 200으로 설정하자 서클 프로필 이미지가 완벽했습니다.이것은 당시 제 VC의 코드였습니다.
profileImage2.layer.cornerRadius = profileImage2.frame.size.width/2
profileImage2.clipsToBounds = true
이 방법은 가장 저렴한 방법이며 항상 이미지 보기를 반올림합니다.
class RoundedImageView: UIImageView {
override init(frame: CGRect) {
super.init(frame: frame)
clipsToBounds = true
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
clipsToBounds = true
}
override func layoutSubviews() {
super.layoutSubviews()
assert(bounds.height == bounds.width, "The aspect ratio isn't 1/1. You can never round this image view!")
layer.cornerRadius = bounds.height / 2
}
}
다른 답변은 에서 설정된 프레임 계산을 기반으로 반올림된 보기를 만들라는 것입니다.UIViewController
s viewDidLoad()
방법.이것은 정확하지 않습니다, 왜냐하면 최종 프레임이 무엇이 될지 확실하지 않기 때문입니다.
Swift 4의 경우:
import UIKit
extension UIImageView {
func makeRounded() {
let radius = self.frame.width/2.0
self.layer.cornerRadius = radius
self.layer.masksToBounds = true
}
}
위의 모든 답변이 제 경우에 문제를 해결하지 못했습니다.ImageView
맞춤형으로 배치되었습니다.UITableViewCell
그러므로 나는 또한 전화를 했습니다.layoutIfNeeded()
여기서부터의 방법.예:
class NameTableViewCell:UITableViewCell,UITextFieldDelegate { ...
override func awakeFromNib() {
self.layoutIfNeeded()
profileImageView.layoutIfNeeded()
profileImageView.isUserInteractionEnabled = true
let square = profileImageView.frame.size.width < profileImageView.frame.height ? CGSize(width: profileImageView.frame.size.width, height: profileImageView.frame.size.width) : CGSize(width: profileImageView.frame.size.height, height: profileImageView.frame.size.height)
profileImageView.addGestureRecognizer(tapGesture)
profileImageView.layer.cornerRadius = square.width/2
profileImageView.clipsToBounds = true;
}
struct CircleImage: View {
var image: Image
var body: some View {
image
.clipShape(Circle())
}
}
이는 다음에 대한 것입니다.SwiftUI
extension UIImageView{
// Round Image
func roundCorner() {
self.layer.masksToBounds = true
self.layer.borderWidth = 1.0
self.layer.borderColor = UIColor.clear.cgColor
self.layer.cornerRadius = self.frame.size.width/2
}
}
먼저 Circular Image View(원형 이미지 보기)를 얻기 위해 동일한 너비와 높이를 설정해야 합니다.아래에 가로와 세로를 100,100으로 설정합니다.필요한 크기에 따라 너비와 높이를 동일하게 설정하려면 여기에 설정합니다.
var imageCircle = UIImageView(frame: CGRectMake(0, 0, 100, 100))
그런 다음 모서리 반지름의 높이/2를 설정해야 합니다.
imageCircle.layer.cornerRadius = imageCircle.frame.size.height/2
imageCircle.layer.borderWidth = 1
imageCircle.layer.borderColor = UIColor.blueColor().CGColor
imageCircle.clipsToBounds = true
self.view.addSubview(imageCircle)
Swift3/Swift4 개발자의 경우:
let radius = yourImageView.frame.width / 2
yourImageView.layer.cornerRadius = radius
yourImageView.layer.masksToBounds = true
반올림한 이미지의 경우 확장에서 다음 코드만 사용할 수 있습니다.
self.layoutIfNeeded() // 자동 레이아웃의 경우(댓글에서 Tom Spee가 언급함).
또한 결과를 얻으려면 UIImageView contentMode의 속성을 올바르게 설정해야 합니다.내 경우에는 다음과 같습니다.
imageView.contentMode = .scaleAspectFit
extension UIImageView {
func setRounded() {
self.layoutIfNeeded()
self.layer.cornerRadius = self.frame.height / 2
self.clipsToBounds = true
}
}
// code to make the image round
import UIKit
extension UIImageView {
public func maskCircle(anyImage: UIImage) {
self.contentMode = UIViewContentMode.ScaleAspectFill
self.layer.cornerRadius = self.frame.height / 2
self.layer.masksToBounds = false
self.clipsToBounds = true
// make square(* must to make circle),
// resize(reduce the kilobyte) and
// fix rotation.
// self.image = prepareImage(anyImage)
}
}
뷰 컨트롤러에서 함수를 호출합니다.
self.imgCircleSmallImage.maskCircle(imgCircleSmallImage.image!)
imageView.layer.cornerRadius = imageView.frame.height/2
imageView.clipToBounds = true
이미지가 둥근 경우 높이와 너비가 정확히 같은 크기(예: 120)입니다.이 숫자의 절반을 코드에 사용하기만 하면 됩니다(image.layer.cornerRadius = 60).
언급URL : https://stackoverflow.com/questions/28074679/how-to-set-image-in-circle-in-swift
'sourcecode' 카테고리의 다른 글
혜성과 jQuery (0) | 2023.08.06 |
---|---|
구조체 끝의 크기가 0인 배열 (0) | 2023.08.06 |
Python 시간대 변환 (0) | 2023.08.06 |
충돌:여러 자산이 동일한 파일 이름으로 방출됨 (0) | 2023.08.01 |
AJAX에서 GET vs POST? (0) | 2023.08.01 |