圆/圆UIView Swift - 没有角半径的正方形

时间:2016-02-20 15:23:53

标签: ios swift uiview swift2

我想要一个“真正的”圆形UIView,以避免应用角半径的方形视图。

因为我正在使用重力,并且我的圈子没有很好地显示,因为它们不能在角落里互相接触(屏幕来自“调试视图层次结构”按钮以3D模式看到屏幕:

enter image description here

圆形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")
    }
}

谢谢!

2 个答案:

答案 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()
    }
}

希望我理解正确并且它帮助了你:)