我的viewController
中有一个UIButton,一切正常,直到我更改了目标视图控制器的某些代码,现在无法看到,当我触摸它时,它会让我崩溃。
destinationViewController
destinationViewController
被尖叫并隐藏在按钮的位置,否则与viewController
我对按钮有3个约束:宽高比= 1:1,底部=底部布局指南+ 34,centerX
@IBOutlet weak var calculateButton: UIButton!
override func viewDidLoad() {
calculateButton.isEnabled = false
calculateButton.layer.cornerRadius = calculateButton.frame.size.width / 2
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
if itemCountTextField.text != "" {
calculateButton.isEnabled = true
} else {
calculateButton.isEnabled = false
}
textField.resignFirstResponder()
return true
}
func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
transtion.transitionMode = .dismiss
transtion.startingPoint = calculateButton.center
transtion.circleColor = calculateButton.backgroundColor!
return transtion
}
func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
transtion.transitionMode = .present
transtion.startingPoint = calculateButton.center
transtion.circleColor = calculateButton.backgroundColor!
return transtion
}
为什么它会消失?
答案 0 :(得分:1)
似乎在调用viewDidAppear
之前,布局尚未完成。 (XCode8)因此calculateButton.layer.cornerRadius = calculateButton.frame.size.width / 2
在viewDidLoad
中调用calculateButton的帧大小可能不正确,你可能最终得到一个太大的角半径,最终在viewDidAppear之后的一个不可见的图像中。
尝试在设置cornerRadius或调用self.view.layoutIfNeeded()
中的代码之前添加viewDidAppear
。
另外,你说你有3个约束:
我对按钮有3个约束:宽高比= 1:1,bottom = 底部布局指南+ 34,centerX
这不足以成功指定按钮的布局。您还需要指定宽度或高度。现在,只要宽度==高度,0像素的高度和宽度就完全有效。
答案 1 :(得分:0)
感谢大家的回答。 @RashwanL是对的,我们应该在设计故事板时控制我们的约束。
我将print(calculateButton.frame.size.width)
放在viewDidLoad()
中,我发现按钮的大小是1000.然后我检查了按钮的限制,并尝试简单地说,现在它已修复。