2016-06-17 15 views
1

私は、画面にボタンを追加する作業をしています。画面上にボタンはありません。UIWindowにボタンを追加します。ベストプラクティス?

ので、アンドロイドのように基本的には、フローティングアクションボタン。

私は次のライブラリを使用していた、彼らは正常に動作しますが、バグがあり、最適ではない:

  • KCFloatingActionButton
  • LiquidFloatingActionButton

だから、私は自分のボタンを作成することを決めました。 問題は、ボタンを追加する場所がわかりません。私はこのquestionを見てきましたタブバーコントローラ

を使用しています。

それが解決策を提案している以下の:

1)の代わりにUITableVCの使用のUIViewControllerが、私はそれを行うすることができません。

2)第二の溶液は、自動レイアウトの添加ので動作しません。

3)もう一つは、私はナビゲーションコントローラを持っている場合は、ナビゲーションコントローラ上のボタンを追加することです。

私は個人的にUIWindowにそれを追加することを検討しています。しかし、私はそれをしなければならないかどうかわかりません。フローティングアクションボタンを追加するための推奨事項とベストプラクティスは何ですか?

これは私がしようとしたものです:

let fab : UIButton = UIButton() 


    fab.translatesAutoresizingMaskIntoConstraints = false 
    fab.center.x = (self.navigationController?.view.center.x)! + (self.navigationController?.view.frame.width)!/2 - 50.0 
    fab.center.y = (self.navigationController?.view.center.y)! + (self.navigationController?.view.frame.height)!/2 - 110.0 
    fab.frame.size = CGSize(width: 60.0, height: 60.0) 


    self.navigationController?.view.addSubview(fab) 

    var constraintSet = [NSLayoutConstraint]() 

    constraintSet.append(fab.centerXAnchor.constraintEqualToAnchor(self.navigationController?.view.centerXAnchor, constant: self.view.frame.width/2 - 50.0)) 
    constraintSet.append(fab.centerYAnchor.constraintEqualToAnchor(self.navigationController?.view.centerYAnchor, constant: self.view.frame.height/2 - 110.0)) 
    constraintSet.append(fab.heightAnchor.constraintEqualToConstant(60.0)) 
    constraintSet.append(fab.widthAnchor.constraintEqualToConstant(60.0)) 
    self.navigationController?.view.addConstraints(constraintSet) 

    fab.layer.zPosition = 3.0 
    fab.setImage(UIImage(named: "fab"), forState: .Normal) 
ここ

は、Fabの画像です:誰かが

enter image description here

+0

ため、私はいくつかの問題のコードを少し変更しました。ありがとうございます。 –

答えて

1

を試してみたい場合は、なぜちょうどベースビュークラス(サブクラスを作成しませんUIViewController)、そのビューにフローティングボタンを追加します。このベースビューのサブクラスとして残りのビューを作成します。 1つの利点は、フローティングボタンをウィンドウから削除してもう一度追加するのではなく、隠すコントロールを持つことです。

編集 enter image description here

+0

"このベースビューのサブクラスとして残りのビューを作成しますか?"申し訳ありませんが、私はあなたの答えを理解することができません:( –

+0

私はあなたのために、より良い理解を得るためのスクリーンショットを追加しましたBaseVC UIViewControllerあなたのフローティングボタンをサブビューとしてすることができます。 –

2

あなたはkeyWindowを使用し、サブビューとしてあなたのボタンを追加することができます。

var window :UIWindow = UIApplication.sharedApplication().keyWindow 
window.addSubview(yourButton) 
+0

はい、私はこれについて考えましたが、私はどこでもそれを推薦するリンゴを見たことがありませんでしたが、私はそれを考慮するが、それは良い練習ですか?それは私の質問です.. –

+0

私のコードと比較して、ウィンドウのコードはちょうど2行であるため、ほんのわずかであることがわかります。しかし、それは後で(パフォーマンスまたは一般的にそれは良い業界の練習ですか?)何かトラブルを引き起こすつもりですか?私は会社のためにこのアプリを開発しているからです。 –

関連する問題