我正在尝试制作一个应用程序,其中包含圆形图像视图中的图像,但具有不同大小和不同大小的图像。我的目标是在图像太大时显示一小部分图像(因此图像看起来不会失真)。
我能够获得圆形的imageView,但它总是针对不同的图像大小不同 - 这不是我想要的。我在这里阅读帖子:
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
加载图片。我还缺少什么吗?
答案 0 :(得分:1)
如果使角半径图与宽度或高度等成比例,那么这将为图像提供恒定的圆度。在这里,我建议使用div作为示例。
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行,这应该是它。
干杯
答案 1 :(得分:0)
嗨,这是最好的解决方案,非常快:
- (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,我认为它比上面的另一个慢:
答案 2 :(得分:0)
UIViewContentModeScaleAspectFill
更适合您的需求,因为它可以将图像缩放为填充 imageView的大小,而不会更改遮挡比率。
但不要忘记为imageView设置clipsToBounds
到YES
,以便从视图边界中删除其余部分:
[self.imageView setClipsToBounds:YES];
答案 3 :(得分:0)
我找到了解决问题的方法。
由于一些奇怪的原因......我无法在imageView
上使用UITableViewCell
的各种图片。我最终在imageView
(透明png)中放置了一个占位符图像,然后我在我的问题中使用相同的代码放置了我自己的UIImageView
,它运行正常。对imageView
的计算方式做了一些奇怪的事。