gpt4 book ai didi

iphone - UITableViewCell 圆角和剪辑 subview

转载 作者:行者123 更新时间:2023-12-03 18:32:42 25 4
gpt4 key购买 nike

我在任何地方(搜索引擎、文档、此处等)都找不到任何内容来展示如何在也剪辑 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com