所以我正在创建一个使用Facebook登录的iOS应用程序。登录屏幕和主屏幕是相同的(使用相同的viewcontroller)并在登录时调整内容。
从安全性和性能角度登录时,最好如何调整屏幕?
例如:我应该使用removeFromSuperview()和addSubview(view)还是ishidden = true / false?
答案 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
属性隐藏然后取消隐藏视图相比,添加和删除子视图的计算成本更高。
那么我们应该使用哪一个?何时使用?
添加/删除子视图
您应该只在视图在可预见的将来保留时添加子视图。同样,只有在您认为应该在可预见的将来删除视图时,才应删除该视图。
隐藏/显示子视图
当知道视图需要在可预见的未来被带回时,你应隐藏一个子视图,反之亦然,以便取消隐藏。