2017-02-17 13 views
-1

Facebookを使用してログインするiOSアプリケーションを作成しています。ログイン画面とホーム画面は同じです(同じviewcontrollerを使用します)。UI要素を非表示/表示vs追加/削除(スウィフト)

セキュリティとパフォーマンスの観点からログインしたときに画面を適応させるにはどうすればよいですか?

例:removeFromSuperview()およびaddSubview(view)またはishidden = true/falseを使用する必要がありますか?

+0

ログインとホーム画面に同じviewcontrollerを使用する特定の理由はありますか? –

+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()のみべきを使用してその要素を

を非表示と比較した場合、プログラマのコードとワークを追加し、バイト割り当てを台無しスーパービューからボタンを完全に削除したい場合や、それをもう一度追加しない場合に使用してください。

これが役立つかどうか、アドバイスがある場合はお知らせください。

+0

答えをありがとう、知っておいてよかった!UIの要素の表示/非表示の代わりにrootにリセットするためにログアウトするときに、ログイン画面とホーム画面を別々のビューに分割してしまいました。 – Fredrik

0

サブビューの追加と削除は、isHiddenプロパティを使用してビューを非表示にしてから再表示するのと比較して、計算コストが高くなります。

どのような場合に使用する必要がありますか?あなたが唯一のビューは予見可能な将来のために残っているべきであるとサブビューを追加する必要があります

  1. の追加/削除をサブビュー。同様に、近い将来に削除する必要があると思われるビューのみを削除する必要があります。

  2. 表示/非表示のサブビュー

    ビューが非表示解除のための予見可能な将来とその逆に持ち帰っする必要があることが知られているときは、サブビューを非表示にします。

+0

**サブビューの追加と削除**、編集する必要があります。 –

+0

おっと、私は悪い、ありがとう:) – torinpitchers

関連する問題