imageView의 모서리 반경을 설정하는 방법은 무엇입니까?
Objective-C에서 기존 라인
self.mainImageView.layer.cornerRadius = CGRectGetWidth(self.mainImageView.frame)/4.0f;
그것의 일을, 나는 유추를 사용하여 Swift에서 시도했습니다
self.mainImageView.layer.cornerRadius = CGRectGetWidth(self.mainImageView.frame)/4.0
아무것도 바뀌지 않고 모서리는 이전과 동일합니다. 또한 Xcode는 구문 오류를 표시하지 않습니다. Swift는이 목표를 달성하기위한 다른 방법을 지원합니까? 여기에서 다른 방식을 사용하는 것이 일반적으로 위에 수행됩니다.
레이어가 클립 영역을 벗어나면 경계에 마스크를 설정해야합니다.
self.mainImageView.layer.masksToBounds = true
로부터 문서 :
기본적으로 모서리 반경은 레이어의 콘텐츠 속성에있는 이미지에 적용됩니다. 레이어의 배경색과 적용에만 적용됩니다. 그러나 masksToBounds 속성을 true로 설정하면 콘텐츠가 모서리 모서리로 잘립니다.
Swift 3.0 과 Xcode8 에는 작은 차이가 있습니다.
모서리 반경을 UIView에 청구 yourUIView.layoutIfNeeded()
하기 전에 호출 해야합니다 cornerRadius
.
라이선스 UIView의 높이와 너비 (1000.0)에 대한 참조를 반환하여 뷰가 사라질 수 있습니다.
레이어 속성을 설정하기 전에 항상 UIView (인터페이스 전에 제약 등)의 크기를 적용하십시오.
UIView 클래스 구현 예
class BadgeView: UIView {
override func awakeFromNib() {
self.layoutIfNeeded()
layer.cornerRadius = self.frame.height / 2.0
layer.masksToBounds = true
}
}
이 시도
self.mainImageView.layer.cornerRadius = CGRectGetWidth(self.mainImageView.frame)/4.0
self.mainImageView.clipsToBounds = true
"사용자 정의 실행 속성"을 제공하는 모든보기의 반경을 정의하고 사용자 유형의 "layer.cornerRadius"키 경로를 제공하는 한 다음 필요한 반경 값을 제공 할 수 있습니다. 아래 첨부 된 이미지를 참조하십시오.
@IBInspectable
swift (또는 Objective-C에서 IBInspectable)로 표시되어 인터페이스 빌더의 속성 검사기 패널에서 쉽게 편집 할 수 있습니다. 속성 관리자에서 borderWidth , cornerRadius , borderColor 를
직접 수 있습니다.
extension UIView {
@IBInspectable var cornerRadius: CGFloat {
get{
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
}
}
@IBInspectable var borderWidth: CGFloat {
get {
return layer.borderWidth
}
set {
layer.borderWidth = newValue
}
}
@IBInspectable var borderColor: UIColor? {
get {
return UIColor(cgColor: layer.borderColor!)
}
set {
layer.borderColor = borderColor?.cgColor
}
}
}
3'CGRectGetWidth '가'CGRect.width '속성으로 대체되었습니다.
view.layer.cornerRadius = view.frame.width/4.0
view.clipsToBounds = true
스위프트 3, Xcode 8, iOS 10
DispatchQueue.main.async {
self.mainImageView.layer.cornerRadius = self.mainImageView.bounds.size.width / 2.0
self.mainImageView.clipsToBounds = true
}
가장 쉬운 방법은 UIImageView 하위 클래스를 만드는 것입니다 (해본 적이없는 iPhone 7 및 XCode 8에서 완벽하게 작동합니다).
class CIRoundedImageView: UIImageView {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func awakeFromNib() {
self.layoutIfNeeded()
layer.cornerRadius = self.frame.height / 2.0
layer.masksToBounds = true
}
}
그런 다음 접근 할 수 있습니다.
imageView.layer.borderWidth = 2.0
imageView.layer.borderColor = UIColor.blackColor().CGColor
UIView
특정 모서리를 둥글게 할 수 있는 확장 프로그램을 만들었습니다 .
import UIKit
enum RoundType {
case top
case none
case bottom
case both
}
extension UIView {
func round(with type: RoundType, radius: CGFloat = 3.0) {
var corners: UIRectCorner
switch type {
case .top:
corners = [.topLeft, .topRight]
case .none:
corners = []
case .bottom:
corners = [.bottomLeft, .bottomRight]
case .both:
corners = [.allCorners]
}
DispatchQueue.main.async {
let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
let mask = CAShapeLayer()
mask.path = path.cgPath
self.layer.mask = mask
}
}
}
Swift에서 시도하십시오.
self.photoView.layer.cornerRadius = self.photoView.frame.height/2
참고 URL : https://stackoverflow.com/questions/27861383/how-to-set-corner-radius-of-imageview
'ProgramingTip' 카테고리의 다른 글
iPhone을 입력하는 동안 UITextField의 텍스트를 얻는 방법은 무엇입니까? (0) | 2020.12.02 |
---|---|
Cocoapods 설치 오류 (0) | 2020.12.02 |
JavaScript의 속성 값을 배열로 선택해야합니까? (0) | 2020.12.02 |
MotionEvent.ACTION_UP이 호출되지 않을 것입니다. (0) | 2020.12.02 |
암호 입력을 위해 React Native에서 TextInput 스타일을 어떻게 지정합니까? (0) | 2020.12.02 |