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