Button.center 不能在 Swift 3 / 4 的所有屏幕上工作
Posted
技术标签:
【中文标题】Button.center 不能在 Swift 3 / 4 的所有屏幕上工作【英文标题】:Button.center not working on all screens in 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()视图中
尝试从viewWillAppear
或viewDidLayoutSubview
调用它,在viewDidLoad
视图还没有布局,导致错误行为
viewDidLayoutSubview 似乎很好,但是当我在单元格或 UICollectionReusableView 文件上时它不起作用...
【参考方案1】:
你的约束肯定有一些问题。
首先移除所有约束和这个约束
而不是像这样分配约束 对于***人物:
更多按钮:
【讨论】:
感谢您的回答,但我不能这样做。图片的高度和宽度不固定。它是根据屏幕设置的:/ 您是否尝试过将它们放入堆栈视图并使用尺寸等级?我认为它应该对你有所帮助。以上是关于Button.center 不能在 Swift 3 / 4 的所有屏幕上工作的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3:不能以编程方式在 Collectionview 标题上正确创建标签?
为啥我不能在 Swift 3 中使用 JTAppleCalendar Pod 文件 JTAppleCell?
(Swift Playground 模板)使用 Swift 5.1 编译的模块不能被 Swift 5.1.3 编译器导入
Swift 3 - 不能使用数组提出的 Alamofire 请求
现有的领域数据库不能在 swift 3.1 xcode 8 中工作
Swift 3:为啥我不能在 didDeselectRowAt 中更改 cell.accessoryType 和 cell.textLabel