Xcode UIImageView 圆角不起作用
Posted
技术标签:
【中文标题】Xcode UIImageView 圆角不起作用【英文标题】:Xcode UIImageView rounded corners doesn't work 【发布时间】:2011-10-17 18:46:37 【问题描述】:我想让 UIImageView 显示为圆角,并在 Stack Overflow 上找到了以下代码:
loginImage = [[UIImageView alloc] initWithImage: [UIImage imageNamed:@"BlueSky.jpg"]];
CALayer *l = [loginImage layer];
[l setMasksToBounds:YES];
[l setCornerRadius:5.0];
[loginImage release];
我将此代码添加到我的 viewDidLoad 方法中,但不幸的是 UIImageView 没有给我我期望的圆角。我在 Interface Builder 中正确链接了 imageview “loginImage”。
任何想法我在这里做错了什么? 谢谢!
【问题讨论】:
很奇怪,但试试 [l setCornerRadius:5.0f];您的项目是否包含重要的框架,例如如果您使用 Interface Builder 创建 UIImageView,您实际上不需要在代码中手动创建它。 所以,如果你用 IB 创建你的 UIImageView,代码应该是这样的。
CALayer *l = [loginImage layer];
[l setMasksToBounds:YES];
[l setCornerRadius:5.0];
loginImage.layer = l;
另外,适合初学者阅读memory management
【讨论】:
好的,现在我明白你的意思了,我会接受你的回答。我实际上做了: CALayer *l = loginImage.layer;在一行中。我想它是有效的?我不应该释放 loginImage 以防我手动为其分配内存吗?我阅读了有关内存管理的课程,实际上是我从中学到的... 您应该在不再需要您的对象时释放它们。例如,这通常在 -(void)dealloc 中进行;方法。所以,如果你需要你的 loginImage,你还不需要发布它。 与行 CALayer* l = loginImage.layer;你把你的 loginImage.layer 等同于 l 而不是反之亦然。【参考方案2】:-(UIImage *)makeRoundedImage:(UIImage *) image
radius: (float) radius;
CALayer *imageLayer = [CALayer layer];
imageLayer.frame = CGRectMake(0, 0, image.size.width, image.size.height);
imageLayer.contents = (id) image.CGImage;
imageLayer.masksToBounds = YES;
imageLayer.cornerRadius = radius;
UIGraphicsBeginImageContext(image.size);
[imageLayer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *roundedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return roundedImage;
【讨论】:
以上是关于Xcode UIImageView 圆角不起作用的主要内容,如果未能解决你的问题,请参考以下文章