Ios 圆形UIImageView
我试图获得一个完整的UIImageView,但在不同的设备上呈现的效果似乎不同 在iPhone Xr上看起来像这样: 在iPhone 7上看起来像这样: 我的高度限制为60,代码如下:Ios 圆形UIImageView,ios,swift,uiimageview,Ios,Swift,Uiimageview,我试图获得一个完整的UIImageView,但在不同的设备上呈现的效果似乎不同 在iPhone Xr上看起来像这样: 在iPhone 7上看起来像这样: 我的高度限制为60,代码如下: override func viewWillLayoutSubviews() { super.viewWillLayoutSubviews() self.userAvatar.layer.cornerRadius = self.userAvatar.frame.height / 2 se
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
self.userAvatar.layer.cornerRadius = self.userAvatar.frame.height / 2
self.userAvatar.layer.masksToBounds = false
self.userAvatar.clipsToBounds = true
self.userAvatar.layer.borderWidth = 0
}
有什么想法吗?在我看来,您给出了图像的前导和尾随约束,而不是固定的宽度 要实现圆形,请将图像视图的宽度指定为高度。
这是由于设备的宽度不同造成的。在我看来,您给出的是图像的前导和尾随约束,而不是固定的宽度 要实现圆形,请将图像视图的宽度指定为高度。
这是因为设备的宽度不同。将高度限制为宽度 并且,创建一个简单的UIImageView子类:
class RoundedImageView: UIImageView {
override func layoutSubviews() {
super.layoutSubviews()
layer.cornerRadius = bounds.height / 2
}
}
框架可以并且将根据视图生命周期进行更改。通过更新布局子视图中的拐角半径,它将使其保持圆形。将高度约束为宽度 并且,创建一个简单的UIImageView子类:
class RoundedImageView: UIImageView {
override func layoutSubviews() {
super.layoutSubviews()
layer.cornerRadius = bounds.height / 2
}
}
框架可以并且将根据视图生命周期进行更改。通过更新layoutSubviews中的拐角半径,它将保持圆形。如果使用Interface Builder(即故事板或XIB)管理此视图,则可以通过定义纵横比约束,直接将方形形状与视图中已有的圆角组合起来,使其成为圆形。不需要编写任何代码 控制拖动,就像您从图像视图创建出口、动作等一样,然后出现以下弹出窗口 选择纵横比,这将创建一个约束匹配,无论视图的当前比率在本例中是什么,它是15:8。如果视图已为正方形,则创建的约束应已正确 如果没有,可以通过单击尺寸检查器的以下图标来查找该约束: 从那里,可以双击该约束进行编辑,并将乘数更改为1:1:
事实上,一个更简单的选项是,一旦您将控件从视图拖动到自身,按住Alt/Opt,弹出窗口中显示的选项将更改为纵横比1:1,这意味着您可以直接从那里进行设置,而无需编辑约束。如果您使用界面生成器(即故事板或XIB)管理此视图,通过为其纵横比定义约束,可以直接从那里强制将方形形状与视图中已有的圆角组合在一起,使其成为圆形。不需要编写任何代码 控制拖动,就像您从图像视图创建出口、动作等一样,然后出现以下弹出窗口 选择纵横比,这将创建一个约束匹配,无论视图的当前比率在本例中是什么,它是15:8。如果视图已为正方形,则创建的约束应已正确 如果没有,可以通过单击尺寸检查器的以下图标来查找该约束: 从那里,可以双击该约束进行编辑,并将乘数更改为1:1:
事实上,一个更简单的选项是,一旦将控件从视图拖动到自身,按住Alt/Opt,弹出窗口中显示的选项将更改为纵横比1:1,这意味着您可以直接从那里设置它,而无需编辑约束。您有宽度约束或前导和尾随约束吗?请设置高度和宽度相等约束。我认为您设置了前导和尾随约束,而不是只设置前导/尾随高度和宽度。您有宽度约束或前导和尾随约束吗尾随?请设置高度和宽度相等的约束。我认为您设置了前导和尾随约束,而不是只设置前导/尾随高度和宽度