【问题标题】:UIImageView cornerRadius is not making it circle [duplicate]UIImageViewcornerRadius 没有使它成为圆形[重复]
【发布时间】:2017-10-06 05:12:42
【问题描述】:

我有一个视图控制器,它显示在 UIView 中,因为我正在使用 CarbonKit 制作像 android 这样的标签。

我有一个userProfileViewController,我在其中一个选项卡下显示,这有一个UIImageView,我正在尝试使用此代码在一个圆圈中显示:

self.userDisplayPic.layer.cornerRadius = self.userDisplayPic.frame.size.width / 2;
self.userDisplayPic.clipsToBounds = true

结果是:

我的猜测是,这可能是因为 UIView 中显示的自动调整大小可能会压缩设计,但其他元素特别是更新按钮似乎很好。那么有什么建议可以解决这个问题吗?

【问题讨论】:

  • 尝试在主线程上做。
  • 我觉得你的图片宽高不一样。
  • 问题可能出在执行此操作时。如果它在 viewDidLoad 中,请将其移动到 viewDidLayoutSubviews 或更改您的约束
  • 另一种选择是创建一个新图像以在您的图像视图中使用stackoverflow.com/questions/29046571/…

标签: ios uiview uiimageview swift4


【解决方案1】:

尝试在 viewWillLayoutSubviews 中设置cornerRadius,它将使用实际宽度作为半径。

override func viewWillLayoutSubviews() {
        self.userDisplayPic.layer.cornerRadius = self.userDisplayPic.frame.size.width / 2;
        self.userDisplayPic.clipsToBounds = true
    }

【讨论】:

  • 谢谢,它对我有用。花了我几个小时~
【解决方案2】:

需要一段时间 self.view.layoutIfNeeded()

试试这个代码

 DispatchQueue.main.async {
         self.view.layoutIfNeeded()    

        self.userDisplayPic.layer.cornerRadius = self.userDisplayPic.frame.size.width / 2;
        self.userDisplayPic.clipsToBounds = true
        self.view.layoutIfNeeded()    


  }

【讨论】:

    【解决方案3】:

    这是因为您的self.userDisplayPicheightwidth 不一样,首先使其相同,然后下面的代码将为您工作。

    self.userDisplayPic.layer.cornerRadius = self.userDisplayPic.frame.size.width / 2;
    self.userDisplayPic.clipsToBounds = true
    

    并在viewWillLayoutSubviewsviewWillAppear 方法中编写这些代码

    【讨论】:

      【解决方案4】:
       self.userDisplayPic.layer.cornerRadius = userDisplayPic.frame.height/2
       self.userDisplayPic.clipsToBounds = true
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-15
        • 2014-05-27
        • 2021-02-09
        • 2022-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多