Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UITableViewCell圆形图像视图_Ios_Objective C_Uitableview - Fatal编程技术网

Ios UITableViewCell圆形图像视图

Ios UITableViewCell圆形图像视图,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我正在尝试制作一个应用程序,它在一个圆形的图像视图中有图像,但图像大小不同。我的目标是在图像太大时显示一小块图像(这样图像看起来就不会失真) 我可以得到完整的imageView,但对于不同的图像,它的大小总是不同的——这不是我想要的。我看了这里的帖子: 我的一些代码用于UITableViewCell(我将其子类化): 我正在使用SDWebImage加载图像。这里还有什么我遗漏的吗?如果将角半径图形与宽度或高度等成比例,那么这将为图像提供恒定的圆度。这里我建议以div by 3为例 self.

我正在尝试制作一个应用程序,它在一个圆形的图像视图中有图像,但图像大小不同。我的目标是在图像太大时显示一小块图像(这样图像看起来就不会失真)

我可以得到完整的imageView,但对于不同的图像,它的大小总是不同的——这不是我想要的。我看了这里的帖子:

我的一些代码用于UITableViewCell(我将其子类化):


我正在使用
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];