我有一個基本任務,作爲我在iOS objective-c的1周培訓的一部分。我的經理告訴我可以不關心UI的設計,但我想盡可能地給他留下深刻的印象。所以我很努力地達到極限。六角形按鈕iOS Objective-c
是否可以編碼按鈕,使其六邊形?我試圖搜索谷歌以及在stackoverlfow,但發現相關的問題,爲web開發和android。
我有一個基本任務,作爲我在iOS objective-c的1周培訓的一部分。我的經理告訴我可以不關心UI的設計,但我想盡可能地給他留下深刻的印象。所以我很努力地達到極限。六角形按鈕iOS Objective-c
是否可以編碼按鈕,使其六邊形?我試圖搜索谷歌以及在stackoverlfow,但發現相關的問題,爲web開發和android。
使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);
}
嗨iAunurag,我不知道如何覆蓋。但我知道如何以編程方式添加按鈕。 – user5295097
只是做一個子類...並複製上面的方法 – iAnurag
你可以使用UIBezierPath來繪製你的六邊形。您可以將它設置爲UIImage,然後將它們添加到您想要的每個按鈕的背景中。你也必須定製UIButton,如果你想在Hexagone之外,它不會得到「觸摸」。 – Larme
謝謝Larme。我會去尋找。但是如果有人會給我一些線索,說明如何去做你想說的話,那就太棒了!順便說一下,我以編程方式執行ui。 – user5295097
請參考[PBJHexagon](https://github.com/piemonte/PBJHexagon),因爲它對您的要求很有用 –