我们如何使用自动布局来舍入 UIImageView

Posted

技术标签:

【中文标题】我们如何使用自动布局来舍入 UIImageView【英文标题】:How can we round the UIImageView using autolayouts 【发布时间】:2015-09-16 07:27:21 【问题描述】:

在我的项目中,我在 tableview 单元格上添加了图像,为此我尝试了一些代码,但不起作用,我在这里做错了什么?

这里我的主要要求是我想对那个图像进行四舍五入(就像圆形格式一样)。

我的代码:

 Personimage = [[UIImageView alloc]init];
   Personimage.image = [UIImage imageNamed:@"ram.jpeg"];
   Personimage.translatesAutoresizingMaskIntoConstraints = NO;
   [Cell.contentView addSubview:Personimage];

   //Applying autolayouts

    NSDictionary * viewsDic = NSDictionaryOfVariableBindings(Personimage)

     [Cell.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-10-[Personimage(80)]"
                                                                                 options:0
                                                                                 metrics:nil
                                                                                   views:viewsDic]];

        [Cell.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-10-[Personimage(80)]"
                                                                                 options:0
                                                                                 metrics:nil
                                                                                   views:viewsDic]];


-(Void)ViewDidAppear

  Personimage.layer.cornerRadius = Personimage.frame.size.width / 2;
  Personimage.layer.borderWidth = 3.0f;
  Personimage.layer.borderColor = [UIColor whiteColor].CGColor;
  Personimage.clipsToBounds = YES;

应用自动布局后,我在 viewDidAppear 方法中保留了图像“圆形”属性,但它仍然不起作用我在这里做错了什么?请帮帮我

【问题讨论】:

什么不起作用?运行这段代码会发生什么? Storyboard and autolayout: how make a circular image的可能重复 设置 personimage.clipdToBounds = YES ;并在将图像分配给它之前设置 imageview 框架 ... 你必须在你的类中导入QuartzCore.hcornerRadius 属性才能工作 你要swift代码还是obj-c代码? 【参考方案1】:

您可以使用此代码对UIImageView进行四舍五入

 imgView.layer.cornerRadius = imgView.frame.size.width / 2;
 imgView.clipsToBounds = YES;

【讨论】:

不,这不起作用,我已经在上面的代码中尝试过了 它正在工作。你应该把它放在正确的地方,例如viewDidAppear。 ;) 您应该使用 UIImage 的一半宽度,而不是 UIImageView,因为在 AutoLayout 可以布局之前它将是 CGSizeZero。你仍然可以像这样使用它,但正如我所说,在 AutoLayout 完成它的工作之后,将代码放在正确的位置。 这对我来说很好..,感谢 Vidhi 分享答案【参考方案2】:

属性 clipsToBounds 是一个Bool 值,将其值从 YES 更改为 true 即可。

享受 Swift 的乐趣!

【讨论】:

以上是关于我们如何使用自动布局来舍入 UIImageView的主要内容,如果未能解决你的问题,请参考以下文章

使用自动布局舍入视图?

如何在电报中舍入输出值?

如何在纵向和横向中自动舍入图像?

调整大小后使用自动布局以编程方式居中 UIImageVIew

如何在 Xcode 上舍入 Facebook 登录 UIImageView 角

如何以编程方式更改使用自动布局在情节提要上创建的 UIImageView 的大小?