2017-02-17 83 views
-1

所以我創建Facebook的使用登陸iOS應用程序。登錄屏幕和主屏幕相同(使用相同的視圖控制器),並在登錄時調整內容。隱藏/顯示UI元素VS添加/刪除(SWIFT)

從安全和性能角度登錄時,如何調整屏幕以適應屏幕?

例如:我應該使用removeFromSuperview()和addSubview(視圖)或是否隱藏=真/假?

+0

是否有製作登錄和主屏幕使用相同的視圖 - 控制特定的原因是什麼? –

+0

不應該從視圖中刪除元素,只需使用'element.isHidden = true //或false' –

+0

刪除該視圖的最大原因是什麼?複雜性 - 適用於編碼員和用戶。最大的原因不是?我猜測性能/內存可以忽略不計,並且在佈局方面都是相同的。 – dfd

回答

3

您只需要使用按鈕的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()只應當您想要從超級視圖中完全刪除按鈕時使用,最好不要再添加它。

讓我知道如果這能幫助,如果您有意見,請發表評論!相比於使用isHidden屬性來隱藏,然後取消隱藏視圖時

+0

感謝您的回答,很高興知道!我最終將登錄屏幕和主屏幕分成了不同的視圖,因爲它更好地工作時註銷重置爲根,而不是取消隱藏/顯示UI元素 – Fredrik

0

添加和移除子視圖是更昂貴的計算。

因此,我們應該使用哪一個是什麼時候?

  1. 添加/刪除子視圖

    您應該只添加一個子視圖時,該視圖應保持在可預見的未來。同樣,只有在您認爲應該在可預見的未來將其刪除時,您才應刪除該視圖。

  2. 隱藏/顯示子視圖

    你應該隱藏子視圖當已知該視圖將需要在可預見的未來,反之爲不隱藏被帶回。

+0

你有2 **添加/刪除子視圖**,應該編輯.. –

+0

哎呀我的壞,謝謝:) – torinpitchers