设置imageview角半径

时间:2015-07-21 11:52:10

标签: ios objective-c iphone

我尝试了大部分解决方法来设置单元格中imageview的角半径。

但是,它仍会显示一个框。我怎么解决这个问题?

cell.imageView.image=[UIImage imageNamed:@"def.png"];
cell.imageView.layer.cornerRadius=cell.imageView.frame.size.width/2;
cell.imageView.layer.borderWidth=3.0f;
cell.imageView.layer.borderColor=[UIColor redColor].CGColor;
cell.imageView.layer.masksToBounds = YES;
cell.imageView.layer.shouldRasterize = YES;

4 个答案:

答案 0 :(得分:1)

尝试将masksToBounds替换为clipsToBounds

cell.imageView.layer.cornerRadius = cell.imageView.frame.size.width/2
cell.imageView.clipsToBounds = YES

请确保cell.imageView.frame.size.width中的宽度正确,例如,如果您在宽度计算后将代码移至UIImageView viewDidLayoutSubviews的宽度使用autolayout

  

视图可以选择限制其子视图的绘制,以便任何   视图外部的部分未显示。这称为剪辑   并使用视图的clipsToBounds属性进行设置。

答案 1 :(得分:1)

尝试导入QuartzCore然后使用UIImageView的图层属性,如下所示:

yourImageView.layer.cornerRadius = 10.0f;
yourImageView.clipsToBounds = YES;

答案 2 :(得分:0)

我认为该单元格会覆盖imageView。 尝试在layoutSubviews方法中粘贴该代码,或者向该单元格添加第二个imageView。

在代码中,layoutSubviews选项看起来像这样:

-(void)layoutSubviews
{
    [super layoutSubviews];

    cell.imageView.image=[UIImage imageNamed:@"def.png"];

    cell.imageView.layer.cornerRadius=cell.imageView.frame.size.width/2;

    cell.imageView.layer.borderWidth=3.0f;

    cell.imageView.layer.borderColor=[UIColor redColor].CGColor;

    cell.imageView.layer.masksToBounds = YES;

    cell.imageView.layer.shouldRasterize = YES;
}

对于像这样的第二个imageView:

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"def.png"]];
imageView.frame = CGRectMake(0, 0, 44, 44);
imageView.layer.cornerRadius = imageView.frame.size.width/2;
imageView.layer.borderWidth = 3.0f;   
imageView.layer.borderColor = [UIColor redColor].CGColor;   
imageView.layer.masksToBounds = YES;   
imageView.layer.shouldRasterize = YES;   
[self addSubview:imageView];

答案 3 :(得分:0)

你只是缺少clipsToBounds声明。

cell.imageView.clipsToBounds = YES;

添加此内容并告诉我结果是什么......

如果这不起作用,请尝试使用cell.clipsToBounds = YES;

当然,它会起作用......