Bre*_*den 9 iphone uitableview
我找不到任何地方(搜索引擎,文档,这里等),它们展示了如何在同样剪辑子视图的元素上创建圆角(特别是在分组表视图中).
我有一些代码可以正确创建一个带有4个圆弧(圆角)的路径的圆角矩形,这个圆弧已在我的子类uitableviewcell中的drawRect:方法中测试过.问题是,子视图恰好是带有内部uiimageviews的uibutton,不遵守uitableviewcell遵循的CGContextClip().
这是代码:
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGFloat radius = 12;
CGFloat width = CGRectGetWidth(rect);
CGFloat height = CGRectGetHeight(rect);
// Make sure corner radius isn't larger than half the shorter side
if (radius > width/2.0)
radius = width/2.0;
if (radius > height/2.0)
radius = height/2.0;
CGFloat minx = CGRectGetMinX(rect) + 10;
CGFloat midx = CGRectGetMidX(rect);
CGFloat maxx = CGRectGetMaxX(rect) - 10;
CGFloat miny = CGRectGetMinY(rect);
CGFloat midy = CGRectGetMidY(rect);
CGFloat maxy = CGRectGetMaxY(rect);
[[UIColor greenColor] set];
CGContextBeginPath(context);
CGContextMoveToPoint(context, minx, midy);
CGContextAddArcToPoint(context, minx, miny, midx, miny, radius);
CGContextAddArcToPoint(context, maxx, miny, maxx, midy, radius);
CGContextAddArcToPoint(context, maxx, maxy, midx, maxy, radius);
CGContextAddArcToPoint(context, minx, maxy, minx, midy, radius);
CGContextClip(context);
CGContextFillRect(context, rect);
[super drawRect:rect];
}
Run Code Online (Sandbox Code Playgroud)
因为这个特定情况是静态的(仅显示在1个特定的按钮行中),所以我可以编辑用于按钮的图像以获得所需的效果.
但是,我有另一个动态的案例.具体来说,一个分组表,其中包含许多数据库驱动的结果,这些结果将显示可能位于带有圆角的第一行或最后一行的照片,因此需要进行剪裁.
那么,是否可以创建一个也剪辑子视图的CGContextClip()?如果是这样,怎么样?
CALayer对象具有圆角的功能:
UIView * someview = something here;
CALayer * layer = [someview layer];
layer.masksToBounds = YES;
layer.cornerRadius = radius;
Run Code Online (Sandbox Code Playgroud)
而且你们都准备好了.您还可以添加一些边框颜色和内容,如果您感兴趣,请查看文档.
| 归档时间: |
|
| 查看次数: |
19556 次 |
| 最近记录: |