【问题标题】:Button can't be seen when created按钮创建时看不到
【发布时间】:2016-09-23 03:59:54
【问题描述】:

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

为什么消失了?

【问题讨论】:

  • 能否添加按钮代码
  • 你可能没有给它添加约束,因此它被隐藏了。控制你的约束。
  • @RashwanL 确认,不是约束问题

标签: ios swift animation uibutton


【解决方案1】:

似乎在调用viewDidAppear 之前,布局是不完整的。 (XCode8) 所以当calculateButton.layer.cornerRadius = calculateButton.frame.size.width / 2viewDidLoad 中调用,calculateButton 的帧大小可能不正确,您可能会得到一个太大的圆角半径,最终在 viewDidAppear 之后出现不可见的图像。

尝试在设置cornerRadius之前添加self.view.layoutIfNeeded()或调用viewDidAppear中的代码。

另外,你说你有 3 个约束:

我对按钮有 3 个约束:纵横比 = 1 : 1,底部 = 底部布局指南 + 34, centerX

这还不足以成功指定按钮的布局。您还需要指定宽度或高度。现在,只要 width == height,0 像素的高度和宽度就完全有效。

【讨论】:

    【解决方案2】:

    感谢大家的回答。 @RashwanL 是对的,我们应该在使用情节提要进行设计时控制我们的约束。

    我把print(calculateButton.frame.size.width)放到viewDidLoad()里,发现按钮的大小是1000。然后我检查了按钮的约束,试着简单了,现在它已经修复了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-14
      相关资源
      最近更新 更多