如何在swift中使用核心图形实现自动布局



我有一个小问题。正如你所看到的,我使用核心图形创建了一个三角形(即"上下文")和三角形的角度(即"retVinkel")。现在,当我在Iphone6s上运行这个应用程序时,它看起来很好,就在我想要的中间,大小合适。当然,三角形的宽度、高度和位置将是相同的,因为我已经在UIView中写入了坐标,例如,对于iPad air,它将位于右角,而不是在中间。

但是,如果屏幕尺寸扩大,那么它将在每个设备中占据相同的空间,我该怎么做才能使三角形保持在中间并扩大。我可以说"向右移动20%的像素,向下移动30%的像素",这样三角形的面积就会受到屏幕大小的影响。

    import UIKit
class TriangleDraw: UIView {

    override func drawRect(rect: CGRect) {
        let context = UIGraphicsGetCurrentContext()
        CGContextSetLineWidth(context, 2.0)
        CGContextSetStrokeColorWithColor(context, UIColor.blackColor().CGColor)
        CGContextMoveToPoint(context, 75, 400)
        CGContextAddLineToPoint(context, 325, 400)
        CGContextAddLineToPoint(context, 325, 225)
        CGContextAddLineToPoint(context, 75, 400)
        let retVinkel = UIGraphicsGetCurrentContext()
        CGContextSetLineWidth(retVinkel, 2.0)
        CGContextSetStrokeColorWithColor(retVinkel, UIColor.blackColor().CGColor)
        CGContextMoveToPoint(retVinkel, 300, 400)
        CGContextAddLineToPoint(retVinkel, 300, 375)
        CGContextAddLineToPoint(retVinkel, 325, 375)
        CGContextStrokePath(context)
        CGContextStrokePath(retVinkel)
    }
}

只需使用边界rect的百分比,而不是固定偏移,如

CGContextMoveToPoint(context, 0.15 * bounds.width, 0.80 * bounds.height)
CGContextAddLineToPoint(context, 0.45 * bounds.width, 0.80 * bounds.height)
...

最新更新