我正在尝试为 if 语句编写更多的三元运算符来练习,但我在将其转换为三元运算符时遇到了困难,需要一些帮助。
我正在尝试为状态、导航栏、工具栏和文本 slider 设置淡入淡出动画。
我有:
var isHidden = false
@objc func textViewTapped(_ sender: UIGestureRecognizer) {
navigationController!.setNavigationBarHidden(!isHidden, animated: false)
isHidden = navigationController!.isNavigationBarHidden
UIView.animate(withDuration: 0.5, animations: {
self.toolbar.isHidden = self.toolbar.isHidden ? false : true
self.textSlider.isHidden = self.textSlider.isHidden ? false : true
self.setNeedsStatusBarAppearanceUpdate()
}, completion: nil)
}
如您所见,我将工具栏和 textSlider 作为三元运算符使用。我需要帮助转换这个位:
navigationController!.setNavigationBarHidden(!isHidden, animated: false)
isHidden = navigationController!.isNavigationBarHidden
这是进入我看不到的 View ,我正在尝试转换它而变得扭曲。
最佳答案
你不需要在这里使用三元运算符,只写这个就足够了:
UIView.animate(withDuration: 0.5, animations: {
self.toolbar.isHidden = !self.toolbar.isHidden
self.textSlider.isHidden = !self.textSlider.isHidden
self.setNeedsStatusBarAppearanceUpdate()
}, completion: nil)
但我猜你这样做是为了练习使用三元运算符,但请注意,有些情况下三元运算符根本没用。并非每个 if 语句都可以转换为一个。例如这个:
if someCondition {
someAction1()
someAction2()
} else {
someActon3()
someAction4()
}
不能将两条语句写成三元运算符的操作数之一。
对于有问题的两行,您可以遵循与上述几行相同的逻辑:
navigationController!.setNavigationBarHidden(isHidden ? false : true, animated: false)
isHidden = isHidden ? false : true // this is really redundant...
三元运算符的一个更合适的用例是当您想根据条件使用非 Bool
类型的不同值时。例如:
label.text = isHidden ? "I am hidden!" : "I am visible!"
关于ios - 需要帮助将 bool 重写为三元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52399038/