我有点失落。我已经使用UIView的图层属性来围绕我的应用程序中的多个元素的角落。但是,这一个UIImageView根本就不符合。不确定我错过了什么。
UIImageView(称为previewImage)包含在Table View Cell中。我已经尝试将cornerRadius属性设置为多个位置(在单元格本身和创建单元格的控制器中)无济于事。
static NSString *CellIdentifier = @"MyTableViewCell";
MyTableViewCell *cell = (MyTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
cell = [topLevelObjects objectAtIndex:0];
cell.previewImage.layer.cornerRadius = 20; //Made it 20 to make sure it's obvious.
}
是否有关于我缺少的细胞加载方式的内容?
答案 0 :(得分:353)
您需要将图层的masksToBounds
属性设置为YES
:
cell.previewImage.layer.masksToBounds = YES;
这是因为UIImageView
控件创建了一个伪子视图来保存UIImage
对象。
答案 1 :(得分:22)
这应该有效
cell.previewImage.clipsToBounds = YES;
cell.previewImage.layer.cornerRadius = 20;
答案 2 :(得分:22)
另外值得注意的是
即如果你有这个
theImageView.contentMode = .scaleAspectFit
和
theImageView.layer.cornerRadius = (theImageView.frame.size.height)/2
theImageView.clipsToBounds = true
或
theImageView.layer.masksToBounds = true
赢得了 。你将不得不摆脱aspectFit代码
//theImageView.contentMode = .scaleAspectFit
答案 3 :(得分:11)
我相信你需要设置:
cell.previewImage.layer.masksToBounds = YES;
cell.previewImage.layer.opaque = NO;
答案 4 :(得分:4)
在Xcode Interface Builder中,选择' Clip Subviews'视图的绘图属性以及在代码cell.previewImage.layer.cornerRadius = 20;
中设置角半径为我做了工作!
答案 5 :(得分:2)
尝试下面这段代码
cell.previewImage.layer.cornerRadius = 20;
cell.previewImage.clipsToBounds = YES;
答案 6 :(得分:1)
尝试此代码:-
self.imgaviewName.clipsToBounds = true
self.imageviewName.layer.cornerRadius = 10
答案 7 :(得分:1)
对于imageView.contentMode = .scaleAspectFill
,如果图像很大,则cornerRadius
不适用,具体取决于硬件。
一些对调整后的全景图像进行测试:
imageView尺寸为160x100。 有趣的是,较新的硬件不一定具有更强大的功能。
随时编辑此帖子以获取更多测试结果!
答案 8 :(得分:0)
-(void) viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[self setMaskTo:viewDistance
byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight];
}
- (void)setMaskTo:(UIView*)view byRoundingCorners:(UIRectCorner)corners
{
UIBezierPath *rounded = [UIBezierPath
bezierPathWithRoundedRect:view.bounds
byRoundingCorners:corners
cornerRadii:CGSizeMake(20.0, 20.0)];
CAShapeLayer *shape = [[CAShapeLayer alloc] init];
shape.frame = self.view.bounds;
[shape setPath:rounded.CGPath];
view.layer.mask = shape;
}
答案 9 :(得分:0)
Swift 4.2答案:
为了使拐角半径起作用,请将图像添加到UIView
,然后需要将图像的masksToBounds
属性设置为true
:
planeImage.layer.masksToBounds = true
planeImage.layer.cornerRadius = 20
注意:将20替换为所需的cornerRadius
答案 10 :(得分:0)
以前的答案没有用吗?
UIImageView的大小可能大于图像的大小。角半径可以设置得很好,但在这种情况下不可见。
通过代码快速检查UIImageView大小:(或可以使用XCode中的“ View UI Hierarchy”工具)
self.imageView.backgroundColor = [UIColor greenColor];
在这种情况下,您应该确保UIImageView与图像具有相同的长宽比。