Ios UITableViewCell圆形图像视图
我正在尝试制作一个应用程序,它在一个圆形的图像视图中有图像,但图像大小不同。我的目标是在图像太大时显示一小块图像(这样图像看起来就不会失真) 我可以得到完整的imageView,但对于不同的图像,它的大小总是不同的——这不是我想要的。我看了这里的帖子: 我的一些代码用于UITableViewCell(我将其子类化):Ios UITableViewCell圆形图像视图,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我正在尝试制作一个应用程序,它在一个圆形的图像视图中有图像,但图像大小不同。我的目标是在图像太大时显示一小块图像(这样图像看起来就不会失真) 我可以得到完整的imageView,但对于不同的图像,它的大小总是不同的——这不是我想要的。我看了这里的帖子: 我的一些代码用于UITableViewCell(我将其子类化): 我正在使用SDWebImage加载图像。这里还有什么我遗漏的吗?如果将角半径图形与宽度或高度等成比例,那么这将为图像提供恒定的圆度。这里我建议以div by 3为例 self.
我正在使用
SDWebImage
加载图像。这里还有什么我遗漏的吗?如果将角半径图形与宽度或高度等成比例,那么这将为图像提供恒定的圆度。这里我建议以div by 3为例
self.imageview.layer.cornerRadius = self.imageview.frame.size.width/3;
希望这就是你要找的
干杯,吉姆
编辑-
我看到您注释掉了aspectFill,尽管这是clipToBounds,或者MaskToBounds应该提供您所需要的。所以通过改变
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
改为
self.imageView.contentMode = UIViewContentModeScaleAspectFill;
保留self.image.cliptobunds行,应该是这样
干杯嗨,这是最好的解决方案,速度非常快:
- (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,我认为它比上面的另一个慢:
UIViewContentModeScaleAspectFill
更适合您的需要,因为它可以将图像缩放为图像视图的大小,而无需更改apsect比率
但不要忘记将imageView的clipsToBounds
设置为YES
,以便将其余部分移出视图边界:
[self.imageView setClipsToBounds:YES];
我找到了解决问题的办法
出于某种奇怪的原因……我无法在
UITableViewCell
上为imageView
使用各种图像。最后,我在imageView
(透明png)中放置了一个占位符图像,然后我将自己的UIImageView
与问题中的代码放在一起,效果很好。在计算imageView
时出现了一些奇怪的情况。的可能副本似乎不起作用。我的问题是,对于不同大小的图像,我希望它不会扭曲imageview,它总是这样做。
[self.imageView setClipsToBounds:YES];