我正在尝试使用CGPoint和CGFloat创建一个圆。但我希望根据所使用的设备,siz中的圆有所不同。我更改了所有的Size类,以反映我想要的大小,我希望,它会认识到,但事实并非如此。
WhiteBar是我使用SB创建的主视图中的UIView,并且为了测试视图是否在size类中进行了更改,我设置了背景颜色,并根据需要查看了它的设置
我的打印行显示了最小的宽度和高度
@IBOutlet var WhiteBar: UIView!
var WhiteCircle = CAShapeLayer()
WhiteCircle.strokeColor = UIColor.whiteColor().CGColor
WhiteCircle.fillColor = UIColor.clearColor().CGColor
WhiteCircle.lineWidth = 15
WhiteCircle.strokeStart = 0
WhiteCircle.strokeEnd = 1
let WhiteCenterPoint = CGPoint (x: WhiteBar.bounds.width / 2, y: WhiteBar.bounds.height / 2)
let WhiteCircleRadius : CGFloat = (WhiteBar.bounds.height / 2 - WhiteCircle.lineWidth / 2)
println(WhiteBar.bounds.width) // outputs the smallest size of all my size classes
println(WhiteBar.bounds.height) // outputs the smallest size of all my size classes
var WhiteCirclePath = UIBezierPath(arcCenter: WhiteCenterPoint, radius: WhiteCircleRadius, startAngle: CGFloat(-0.5 * M_PI), endAngle: CGFloat(1.5 * M_PI), clockwise: true)
WhiteCircle.path = WhiteCirclePath.CGPath
WhiteBar.layoutIfNeeded()
WhiteBar.layer.addSublayer(WhiteCircle)
编辑:似乎是根据w:任意h:任意大小类设置大小的。
提前致谢,
高手
最佳答案
尺寸类(或任何自动布局更改)直到viewDidAppear或viewDidLayoutSubviews之后才应用。您将需要将此代码移入其中之一。您正在查看从Interface Builder文档(xib或Storyboard)中加载的视图的边界。在这些生命周期事件之后,您才应该检查框架或边界。
https://stackoverflow.com/a/28704658/72319