我想要一个“真正的”圆形UIView,以避免应用角半径的方形视图。
因为我正在使用重力,并且我的圈子没有很好地显示,因为它们不能在角落里互相接触(屏幕来自“调试视图层次结构”按钮以3D模式看到屏幕:
圆形UIView的实际代码:
import Foundation
import UIKit
@IBDesignable class CircleView:UIView {
override init (frame : CGRect) {
super.init(frame : frame)
self.layer.cornerRadius = frame.width / 2
self.clipsToBounds = true
addBehavior()
}
convenience init () {
self.init(frame:CGRect(x: 0, y: 0, width: 50 , height: 50))
self.layer.cornerRadius = self.frame.width / 2
self.clipsToBounds = true
}
required init(coder aDecoder: NSCoder) {
fatalError("This class does not support NSCoding")
}
func addBehavior (){
//print("Add all the behavior here")
}
}
谢谢!
答案 0 :(得分:2)
我使用重力,我的圈子没有很好地显示,因为他们不能在角落里互相接触
因此它与绘图无关:它与视图的碰撞方式有关,即动态动画系统认为其边缘的位置。通过将视图的collisionBoundsType
设置为圆圈,可以在iOS 9中解决此问题。
答案 1 :(得分:0)
在CircleView类中,您可以尝试使用UIBezierPath(ovalInRect:rect)来获得一个真正的圆圈:
@IBDesignable class CircleView:UIView {
override func drawRect(rect: CGRect) {
let circlePath = UIBezierPath(ovalInRect: rect)
let color = UIColor.orangeColor()
color.set()
circlePath.fill()
}
}
希望我理解正确并且它帮助了你:)