创建时无法看到按钮

时间:2016-09-23 03:59:55

标签: ios swift animation uibutton

我的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
    }
    

为什么它会消失?

2 个答案:

答案 0 :(得分:1)

似乎在调用viewDidAppear之前,布局尚未完成。 (XCode8)因此calculateButton.layer.cornerRadius = calculateButton.frame.size.width / 2viewDidLoad中调用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.然后我检查了按钮的限制,并尝试简单地说,现在它已修复。