UITableViewCell 圆角 imageView
Posted
技术标签:
【中文标题】UITableViewCell 圆角 imageView【英文标题】:UITableViewCell rounded imageView 【发布时间】:2014-01-26 00:45:29 【问题描述】:我正在尝试制作一个在圆形 imageView 中包含图像但具有不同大小的图像的应用。我的目标是在图像太大时显示一小部分图像(这样图像看起来不会失真)。
我能够得到四舍五入的 imageView,但对于不同的图像,它的大小总是不同的——这不是我想要的。我在这里阅读了帖子:
UIImage with rounded corners
Using cornerRadius on a UIImageView in a UITableViewCell
我的一些代码用于 UITableViewCell(我对其进行了子类化):
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self)
// Initialization code
// [self.imageView setContentMode:UIViewContentModeScaleAspectFill];
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
self.imageView.bounds = CGRectMake(0, 0, 44,44);
self.imageView.frame = CGRectMake(5, 10, 44, 44);
CGRect frame = self.imageView.frame;
self.imageView.layer.cornerRadius = 15;
[self.imageView.layer setMasksToBounds:YES];
self.imageView.clipsToBounds = YES;
return self;
我正在使用SDWebImage
加载图像。我这里还有什么遗漏的吗?
【问题讨论】:
ios rounded corner UIImage with border的可能重复 【参考方案1】:如果您使角半径数字与宽度或高度等成比例,那么这将为您提供恒定的图像圆度。这里我建议 div by 3 作为示例。
self.imageview.layer.cornerRadius = self.imageview.frame.size.width/3;
希望这就是你要找的。p>
干杯,吉姆
编辑 -
我看到您注释掉了 aspectFill,尽管这与 clipToBounds 或 MaskToBounds 应该提供您正在寻找的内容。所以通过改变
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
改成
self.imageView.contentMode = UIViewContentModeScaleAspectFill;
并保持 self.image.clipToBounds 线,应该是它。
干杯
【讨论】:
似乎不起作用。我的问题是图像大小不同,我希望它不会扭曲图像视图,并且它总是这样做。【参考方案2】:您好,这是最好的解决方案,而且速度非常快:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self)
CALayer * l = [self layer];
[l setMasksToBounds:YES];
[l setCornerRadius:10.0];
// You can even add a border
[l setBorderWidth:self.frame.size.width/IMG_PROFILE_BORDER_SCALE];
[l setBorderColor:[[UIColor grayColor] CGColor]];
return self;
而且显然不要忘记导入 QuartzCore 框架:
#import <QuartzCore/QuartzCore.h>
但是,如果您有兴趣,我还在 GitHub 上创建了一个可用的对象来创建围绕图像着色的路径。这个解决方案使用 CoreGraphics,我认为它比上面的另一个慢:
GBPathImageView
【讨论】:
【参考方案3】:UIViewContentModeScaleAspectFill
更适合您的需要,因为它可以将图像缩放到 填充 imageView 的大小,而不会改变宽高比。
但不要忘记将 imageView 的 clipsToBounds
设置为 YES
,以便将剩余部分移出视图边界:
[self.imageView setClipsToBounds:YES];
【讨论】:
【参考方案4】:我找到了解决问题的方法。
出于某种奇怪的原因...我无法在UITableViewCell
上为imageView
使用不同的图像。我最终在imageView
(透明png)中放置了一个占位符图像,然后在我的问题中使用相同的代码放置了我自己的UIImageView
,它运行良好。 imageView
的计算方式有些奇怪。
【讨论】:
以上是关于UITableViewCell 圆角 imageView的主要内容,如果未能解决你的问题,请参考以下文章
使用 QuartzCore 对 UITableViewCell 内的 UIImageView 进行圆角时,滚动体验缓慢
Xamarin.iOS UITableViewCell ImageView 上的圆角
调整 UITableViewCell 的大小以适合标签或图像和圆角