【问题标题】:Button.center not working on all screens in Swift 3 / 4Button.center 不能在 Swift 3 / 4 的所有屏幕上工作
【发布时间】:2018-02-03 08:14:41
【问题描述】:

我在我的应用程序中创建了一个“更多”按钮,以及当我们聚焦按钮时的一个很酷的动画。它在 iPhone 6 上运行良好,但不适用于 6S plus 或 5s。

这是我的按钮和约束:

我创建了一个 backgroundView,当我聚焦按钮时我会制作动画:

func createBackgroundEffet(_ backgroundView: UIView, size: Int, buttonFocused: UIButton){
      backgroundView.frame = CGRect(x: 0, y: 0, width: size, height: size)
      backgroundView.backgroundColor = UIColor(red: 200 / 255, green: 200 / 255, blue: 200 / 255, alpha: 1)
      backgroundView.layer.cornerRadius = backgroundView.frame.size.width / 2
      backgroundView.clipsToBounds = true
      backgroundView.center = buttonFocused.center
      backgroundView.alpha = 1
      self.insertSubview(backgroundView, at: 2)
 }

(我为示例设置了 backgroundView.alpha = 1)

这取决于屏幕的结果(在 iPhone 6 上,它完全位于“更多”按钮上)。

我认为 buttonFocused.center 的值是 iPhone 6 的值。

我能做些什么来纠正这个问题?

【问题讨论】:

  • 你在哪里称呼这个createBackgroundEffet
  • 在视图的didLoad()或awakeFromNib()视图中
  • 尝试从viewWillAppearviewDidLayoutSubview调用它,在viewDidLoad视图还没有布局,导致错误行为
  • viewDidLayoutSubview 似乎很好,但是当我在单元格或 UICollectionReusableView 文件上时它不起作用...

标签: ios swift button swift3 center


【解决方案1】:

你的约束肯定有一些问题。

首先移除所有约束和这个约束

而不是像这样分配约束 对于顶级人物:

更多按钮:

【讨论】:

  • 感谢您的回答,但我不能这样做。图片的高度和宽度不固定。它是根据屏幕设置的:/
  • 您是否尝试过将它们放入堆栈视图并使用尺寸等级?我认为它应该对你有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-28
  • 1970-01-01
  • 2018-07-02
  • 2019-04-08
  • 2017-12-03
  • 2014-04-11
  • 1970-01-01
相关资源
最近更新 更多