swift - 按钮未出现在场景中并出现在左上角
问题描述
@objc func buttonRoundPlayer(){
buttonRound.setTitle("PlayerControl", for: .normal)
buttonRound.addTarget(self, action: #selector(roundhandle), for: .touchUpInside)
buttonRound.backgroundColor = .clear
buttonRound.layer.cornerRadius = 5
buttonRound.layer.borderWidth = 1
buttonRound.layer.borderColor = UIColor.white.cgColor
buttonRound.frame = CGRect(x: self.frame.width + 260, y: 260, width: 50, height: 50)
self.view!.addSubview(buttonRound)
}
该按钮不会出现在场景中,除非 self.view!.addSubview(buttonRound) 和 CGRect 似乎不会影响按钮的位置,并且按钮出现在左上角并且似乎没有任何变化会影响按钮的位置。
我希望能在这个问题上得到一些帮助。
先感谢您。
解决方案
如果你调用这个函数,viewDidLoad()
那么self.frame
可能只是一个空矩形。帧计算最好在viewWillAppear()
或中完成viewWillLayoutSubviews()
。
但总的来说,最好使用自动布局。例如:
buttonRound.translatesAutoresizingMaskIntoConstraints = false
buttonRound.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
buttonRound.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
有关更多信息,请参阅 Apple 的自动布局指南或搜索可用的许多教程。
推荐阅读
- .net - Task.Run(方法组)与 Task.Run(lambda)
- reactjs - gitlab-ci 配置,管道卡在单元测试中
- c# - DataTable 未在 sql server 中完全填充数据类型
- angular - 如何通过 forkjoin 组合多个 Observable 值以产生单个值 Observable
- c# - 十进制 SQL Server EF C# 的参数超出范围异常
- android - Android CameraX GLSurfaceView
- javascript - React 路由和 history.push
- javascript - 流式类型转换
- ios - 如何显示从一个视图向右或向左刷卡到另一个视图的正确和错误计数
- c++ - 通过在迭代指针键控映射上出错来捕获不确定性