六角按钮iOS目标-c

时间:2015-09-04 07:07:31

标签: ios objective-c

我有一项基本任务,作为我在iOS objective-c的1周培训的一部分。我的经理告诉我,不关心ui的设计是可以的,但我想尽可能地给他留下深刻印象lol。所以我非常推动自己达到极限。

是否可以对按钮进行编码以使其成为六边形?我尝试在谷歌以及stackoverlfow上搜索,但发现了与web开发和android相关的问题。

这是我的进步: enter image description here

以下是我想制作或复制的用户界面: enter image description here

1 个答案:

答案 0 :(得分:0)

创建UIButton的子类并覆盖drawRect方法。

- (void)drawRect:(CGRect)rect
{
    float polySize = 60; // change this

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSaveGState(context);

    CGAffineTransform t0 = CGContextGetCTM(context);
    t0 = CGAffineTransformInvert(t0);
    CGContextConcatCTM(context, t0);

    //Begin drawing setup
    CGContextBeginPath(context);
    CGContextSetRGBStrokeColor(context, 0, 0, 0, 1);
    CGContextSetLineWidth(context, 2.0);

    CGPoint center;

    //Start drawing polygon
    center = CGPointMake(60, 60.0);
    CGContextMoveToPoint(context, center.x, center.y + polySize);
    for(int i = 1; i < 6; ++i)
    {
        CGFloat x = polySize * sinf(i * 2.0 * M_PI / 6);
        CGFloat y = polySize * cosf(i * 2.0 * M_PI / 6);
        CGContextAddLineToPoint(context, center.x + x, center.y + y);
    }

    //Finish Drawing
    CGContextClosePath(context);
    CGContextDrawPath(context, kCGPathStroke);
    CGContextRestoreGState(context);
}