【问题标题】:UIView's cornerRadius does not affect view evenlyUIView 的cornerRadius 不均匀影响视图
【发布时间】:2017-04-14 03:52:18
【问题描述】:

我通常将cornerRadius 应用于这样的自定义视图:

self.layer.cornerRadius = self.frame.size.height/2

但是,我注意到UIView 上的结果角没有均匀应用。具体来说,如附图所示,顶部比底部更早地开始淡入角落。放大时,即使在正常观看水平下也可以看到不均匀的转弯。

有没有人也遇到过这个问题可以解决的?

【问题讨论】:

  • 只是出于好奇,什么时候会有这么详细的检查?
  • 你的视图高度是多少?
  • 您可能正在尝试此代码 self.layer.cornerRadius = self.frame.size.height/2 in viewDidLoad 将其放入 viewDidLayoutSubviews
  • @Dhiru 好建议。对于 tableViewCell(找到它的地方),我在最后打电话给cell.didLayoutSubviews(),但问题仍然存在。
  • @daspianist :您可以在UITableViewCell 的自定义类的drawRect 方法中执行此操作,这样可以正常工作。

标签: ios swift uiview quartz-core


【解决方案1】:

你在哪里叫这条线?

self.layer.cornerRadius = self.frame.size.height/2

如果cornerRadius 不是最终大小的一半,通常会发生此错误。 例如:你在viewDidLoad中设置,self的高度是100,cornerRadius现在是50,但是self完成布局后,它的高度变成90,cornerRadius仍然是50。

有两种方法可以解决这个问题:

  1. 如果您对高度使用固定约束,您可以在任意位置设置cornerRadius:self.layer.cornerRadius = self.someHeightConstraint.constraint / 2

  2. 如果不这样做,请在视图完成布局后设置cornerRadius(在其父视图的viewDidLayoutSubviews 中)

【讨论】:

  • 这似乎也是问题的一个可能原因,所以我 1. 将cornerRadius 设置为固定数字并 2. 调用 layoutSubviews。但是,问题仍然存在。很乐意粘贴更多代码。视图层次结构是:1.tableViewCell.containerView -> 2.foregroundView -> 3.graphicView 问题在graphicView
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-03
相关资源
最近更新 更多