我正在尝试使用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

09-25 18:44
查看更多