自定义UIButton(六角形)的大小不适用于不同的Iphone

时间:2016-09-05 20:03:12

标签: ios iphone swift core-graphics

我有4个UIButtons:

   import UIKit

class HexagonButton: UIButton {



    override func drawRect(rect: CGRect) {
        print("screenheight:\(self.frame.width)")
        let polySize:CGFloat = self.frame.width // change this

        let context = UIGraphicsGetCurrentContext()
        CGContextSaveGState(context)

        var t0 = CGContextGetCTM(context)
        t0 = CGAffineTransformInvert(t0)
        CGContextConcatCTM(context, t0)

        //Begin drawing setup
        CGContextBeginPath(context)

        CGContextSetRGBStrokeColor(context, 0, 0, 0, 1)
        CGContextSetLineWidth(context, 2.0)



        //Start drawing polygon
        let center = CGPointMake(polySize, polySize)
        CGContextMoveToPoint(context, center.x, center.y + polySize)
        for i in 0..<6
        {
            let x = polySize * CGFloat(sinf(Float(i) * 2.0 * Float(M_PI) / 6))
            let y = polySize * CGFloat(cosf(Float(i) * 2.0 * Float(M_PI) / 6))
            CGContextAddLineToPoint(context, center.x + x, center.y + y)

        }


        //Finish Drawing
        CGContextClosePath(context)

        CGContextSetFillColor(context, CGColorGetComponents(UIColor.formen25().CGColor))

        CGContextDrawPath(context, CGPathDrawingMode.FillStroke)
        CGContextFillPath(context)

        CGContextRestoreGState(context)


    }
}

在故事板中,我使UIButtons宽度等于其视图的高度,乘数= 0.2。

如果我在Iphone 5上启动应用程序,我会得到以下结果: on iphon 5

但是在Iphone 6s上它看起来像这样 on iphone 6s plus

用户更改放置按钮的视图的高度。即使我使用静态尺寸的按钮,他们错误的iphone 6s plus。这是我的HexagonButton的错误吗?

也许我必须按特定方式放置按钮?我在堆栈视图的中间添加了两个UIButton,并在视图中居中(水平和垂直)堆栈视图。然后我将其他UIButtons集中在一起,给它们一个顶部和底部空间(-14)到stackview。我把所有按钮都做了相同的尺寸。

编辑: 如果我给按钮一个backgroundcolor,它看起来像这样: button with backgroundcolor

0 个答案:

没有答案