iphone - UITableViewCell 圆角和剪辑 subview

标签 iphone uitableview

我在任何地方(搜索引擎、文档、此处等)都找不到任何内容来展示如何在也剪辑 subview 的元素上创建圆角(尤其是在分组 TableView 中)。

我有代码可以正确地从具有 4 个弧(圆角)的路径中创建一个圆角矩形,该代码已在我的子类 uitableviewcell 中的 drawRect: 方法中进行了测试。问题是 subview (恰好是带有内部 uiimageview 的 uibuttons)不遵守 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];    
}

因为这个特定情况是静态的(仅在 1 个特定按钮行中显示),所以我可以编辑用于按钮的图像以获得所需的效果。

但是,我还有另一个动态案例。具体来说,一个包含大量数据库驱动结果的分组表,这些结果将显示可能位于第一行或最后一行的带圆角的照片,因此需要进行裁剪)。

那么,是否可以创建一个 CGContextClip() 来剪辑 subview ?如果是这样,怎么办?

最佳答案

CALayer 对象具有圆角函数:

UIView * someview = something here;
CALayer * layer = [someview layer];
layer.masksToBounds = YES;
layer.cornerRadius = radius;

一切都准备好了。您还可以添加一些边框颜色和其他内容,如果您感兴趣,请查看文档。

关于iphone - UITableViewCell 圆角和剪辑 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1331632/

相关文章:

iphone - UIPageViewController 在 iOS 6 中不返回任何手势识别器

iphone - 将 URL 解码为 JSON

ios - 自定义 UITableViewCells 和 UITableView 的问题

iphone - 当我上下滚动时,UITableView 仅显示来自 JSON 的数据

iphone - 当 iPhone 进入休眠状态时,AVAudioPlayer 停止播放音频

ios - 当使用多个部分时,当部分数量可能发生变化时,如何对 tableView 单元格的删除/添加进行动画处理

ios - 无法获取 UITableView 页脚

ios - UISearchDisplayController TableView 的自定义类

ios - Swift:向下滚动时下拉溢出消失

iphone - 如何在 iPhone 应用程序中播放歌曲时显示剩余时间?