制作通告UIView
我正在使用cornerRadius
属性。
我有一个尺寸为79 * 158的UIView。
redView.layer.cornerRadius = redView.frame.size.height/2
redView.layer.masksToBounds = true
它显示的是elipse而不是circle:
任何变通方法或仅适用于方形类型(例如UIView(100 * 100))?
如果动态调整大小,我很好。
答案 0 :(得分:3)
使用此...
func makeCircle (view: UIView) {
view.clipsToBounds = true
let height = view.frame.size.height
let width = view.frame.size.width
let newHeight = min(height, width) // use "max" if you want big circle
var rectFrame = view.frame
rectFrame.size.height = newHeight
rectFrame.size.width = newHeight
view.frame = rectFrame
view.layer.cornerRadius = newHeight/2
}
像这样使用:
@IBOutlet var rectView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
makeCircle(view: rectView)
}
答案 1 :(得分:0)
不能。
尝试将UIView
调整为方格:79 * 79或158 * 158
并设置:
redView.layer.cornerRadius = redView.frame.size.height/2
答案 2 :(得分:0)
你有一个尺寸为79 * 158的UIView。所以这是错误的。您应该具有完全相同的高度和宽度,以便将视图精确地舍入为圆形。
<强> E.g。强>
redView.frame.size.height = 79.0
redView.frame.size.width = 79.0
或强>
redView.frame.size.height = 158.0
redView.frame.size.width = 158.0
并应用角半径,如:
redView.clipsToBounds = true
redView.layer.cornerRadius = redView.frame.size.height / 2.0
<强>结果:强>
注意:同时检查您的约束如果您使用的是自动布局。确保视图框架不会改变。
答案 3 :(得分:0)
如果您正在使用约束,那么更改视图的边框/边界不是一个好主意。相反,你应该做以下。
UIViewController
中,请在cornerRadius
方法中设置viewDidLayoutSubviews
UIView
的子类,则在cornerRadius
方法中设置layoutSubviews
答案 4 :(得分:0)
只有Squire视图才能成为一个完美的圆圈。例如,如果您的视图大小为(10 * 10),(50 * 50),(100 * 100)等,那么您的视图将成为完美的乡绅而不是。
答案 5 :(得分:0)
使用IBDesignable,您可以在故事板中显示没有项目运行的牛.XIB #simple way
第1步。子类UIView:
@IBDesignable class RoundedCornerView: UIView {
@IBInspectable var borderWidth:CGFloat = 2 {
didSet {
layer.borderWidth = borderWidth
}
}
@IBInspectable var borderColor:UIColor = UIColor.orangeGradientLight {
didSet {
layer.borderColor = borderColor.cgColor
}
}
override func layoutSubviews() {
super.layoutSubviews()
layer.cornerRadius = frame.height/2
layer.masksToBounds = true
layer.borderColor = borderColor.cgColor
layer.borderWidth = borderWidth
}
}
第2步。在身份检查器中设置自定义类: