2015-09-04 27 views
1

我有一個基本任務,作爲我在iOS objective-c的1周培訓的一部分。我的經理告訴我可以不關心UI的設計,但我想盡可能地給他留下深刻的印象。所以我很努力地達到極限。六角形按鈕iOS Objective-c

是否可以編碼按鈕,使其六邊形?我試圖搜索谷歌以及在stackoverlfow,但發現相關的問題,爲web開發和android。

這裏是我的進步: enter image description here

這裏是我想要做或複製UI: enter image description here

+1

你可以使用UIBezierPath來繪製你的六邊形。您可以將它設置爲UIImage,然後將它們添加到您想要的每個按鈕的背景中。你也必須定製UIButton,如果你想在Hexagone之外,它不會得到「觸摸」。 – Larme

+0

謝謝Larme。我會去尋找。但是如果有人會給我一些線索,說明如何去做你想說的話,那就太棒了!順便說一下,我以編程方式執行ui。 – user5295097

+0

請參考[PBJHexagon](https://github.com/piemonte/PBJHexagon),因爲它對您的要求很有用 –

回答

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); 
} 
+0

嗨iAunurag,我不知道如何覆蓋。但我知道如何以編程方式添加按鈕。 – user5295097

+0

只是做一個子類...並複製上面的方法 – iAnurag