我想創建一個應該看起來像UIButtonTypeRoundedRect的自定義UIButton。在我的drawRect中,我創建了一個路徑,第一次調用CGContextMoveToPoint(),然後四次調用CGContextAddArc()。然後我撫摸着這條路。但是,在最終的圖像中,四個圓角明顯比其餘路徑厚。我懷疑這與反鋸齒有關,所以我試着用CGContextSetShouldAntiAlias()把它關掉,但後來看起來更糟。我也嘗試過使用線條寬度,但弧線總是比直線更粗。 Apple的UIButtonTypeRoundedRect看起來非常好,所以它必須有可能以某種方式解決。有人有線索嗎?爲什麼我的石英弧顯示比直線更粗?
編輯:相關代碼:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextBeginPath(context);
CGContextMoveToPoint(context, rect.origin.x + kRoundedRectButtonRadius, rect.origin.y);
CGContextAddArc(context, rect.origin.x + rect.size.width - kRoundedRectButtonRadius, rect.origin.y + kRoundedRectButtonRadius, kRoundedRectButtonRadius, 3 * M_PI_2, 0, NO);
CGContextAddArc(context, rect.origin.x + rect.size.width - kRoundedRectButtonRadius, rect.origin.y + rect.size.height - kRoundedRectButtonRadius, kRoundedRectButtonRadius, 0, M_PI_2, NO);
CGContextAddArc(context, rect.origin.x + kRoundedRectButtonRadius, rect.origin.y + rect.size.height - kRoundedRectButtonRadius, kRoundedRectButtonRadius, M_PI_2, M_PI, NO);
CGContextAddArc(context, rect.origin.x + kRoundedRectButtonRadius, rect.origin.y + kRoundedRectButtonRadius, kRoundedRectButtonRadius, M_PI, 3 * M_PI_2, NO);
CGContextClosePath(context);
CGContextSetLineWidth(context, 1.7);
CGContextStrokePath(context);
也許發佈代碼可以幫助我們幫助你? – 2009-05-22 21:24:00