view.layer.cornerRadius = radius;
難的方法(即使用第一代iPhone SDK被必需)是與drawRect:
方法創建自己的UIView
子類:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBFillColor(context, 0,0,0,0.75);
CGContextMoveToPoint(context, rect.origin.x, rect.origin.y + radius);
CGContextAddLineToPoint(context, rect.origin.x, rect.origin.y + rect.size.height - radius);
CGContextAddArc(context, rect.origin.x + radius, rect.origin.y + rect.size.height - radius,
radius, M_PI, M_PI/2, 1); //STS fixed
CGContextAddLineToPoint(context, rect.origin.x + rect.size.width - radius,
rect.origin.y + rect.size.height);
CGContextAddArc(context, rect.origin.x + rect.size.width - radius,
rect.origin.y + rect.size.height - radius, radius, M_PI/2, 0.0f, 1);
CGContextAddLineToPoint(context, rect.origin.x + rect.size.width, rect.origin.y + radius);
CGContextAddArc(context, rect.origin.x + rect.size.width - radius, rect.origin.y + radius,
radius, 0.0f, -M_PI/2, 1);
CGContextAddLineToPoint(context, rect.origin.x + radius, rect.origin.y);
CGContextAddArc(context, rect.origin.x + radius, rect.origin.y + radius, radius,
-M_PI/2, M_PI, 1);
CGContextFillPath(context);
注:rect
在這段代碼也應取自[self bounds]
(或者你想要的任何位置),rect
傳遞給drawRect:
方法就沒有意義了。
感謝我沒有關閉的道路,萬一!會嘗試。 – frankodwyer 2009-06-23 11:23:19
我是否仍然通過IB設置透明度和bg顏色等,如何停止alpha應用於子視圖(text/activityIndicator)?至少我認爲這會發生 - 文本和微調看起來都很無聊/灰色,就像背景是通過白色文本。 – frankodwyer 2009-06-23 11:26:19
在IB中設置透明背景,並在代碼中使用半透明填充顏色。我已經更新了答案。 – Kornel 2009-06-23 11:28:50