隐藏/显示UI元素与添加/删除(Swift)

时间:2017-02-17 13:49:32

标签: ios swift xcode

所以我正在创建一个使用Facebook登录的iOS应用程序。登录屏幕和主屏幕是相同的(使用相同的viewcontroller)并在登录时调整内容。

从安全性和性能角度登录时,最好如何调整屏幕?

例如:我应该使用removeFromSuperview()和addSubview(view)还是ishidden = true / false?

2 个答案:

答案 0 :(得分:5)

您应该只使用按钮的isHidden属性,因为:

  • 它可以为您节省一些样板代码,特别是如果您使用插座

  • isHidden可以轻松制作动画:

    UIView.transition(with: button, duration: 0.4, options: .transitionCrossDissolve, animations: {() -> Void in
    button.isHidden = true // or false depending on the need
    }, completion: { _ in })
    

    使用removeFromSuperview()时更难:

     UIView.transition(with: segmentedControl, duration: 0.4, options: UIViewAnimationOptions.beginFromCurrentState, animations: {() -> Void in
            self.segmentedControl.alpha = 0.0
        }, completion: { (_ finished: Bool) -> Void in
            self.segmentedControl.removeFromSuperview()
        })
    
  • 删除和添加UI元素到视图只会为程序员添加代码和工作,并且与隐藏该元素相比,会混乱字节分配

只有在想要从超级视图中完全删除按钮时才能使用removeFromSuperview()addSubview(),并且最好不要再次将其添加回去。

如果有帮助,请告诉我,如果您有建议,请发表评论!

答案 1 :(得分:0)

与使用isHidden属性隐藏然后取消隐藏视图相比,添加和删除子视图的计算成本更高。

那么我们应该使用哪一个?何时使用?

  1. 添加/删除子视图

    您应该只在视图在可预见的将来保留时添加子视图。同样,只有在您认为应该在可预见的将来删除视图时,才应删除该视图。

  2. 隐藏/显示子视图

    当知道视图需要在可预见的未来被带回时,你应隐藏一个子视图,反之亦然,以便取消隐藏。