2016-09-16 5 views
0

私はこれがiOS10とすべてで新しいことを知っていますが、単純なmsのmessageappextensionアプリを作成しようとしています。そして私が見つけたすべてのチュートリアルは、ストーリーボードを介してラベル、ボタンなどを追加しています。プログラムでSwiftのメッセージアプリケーションにラベルを追加しますか?

私はautlayoutが嫌いですし、ストーリーボードを使用しないので、プログラムで要素を追加する方法を見つける必要があります。これは、アイブ氏が試したものです:

//main label 
     pointsLabel.frame = CGRect(x: 0, y: 0, width: view.bounds.width * 0.5, height: view.bounds.height * 0.1) 
     pointsLabel.center = CGPoint(x: view.bounds.width * 0.5, y: view.bounds.width * 0.7) 
     pointsLabel.textColor = UIColor.red 
     pointsLabel.textAlignment = .center 
     pointsLabel.text = "Testing 123" 
     pointsLabel.font = UIFont(name: "Helvetica", size: screenSize.height * (30/screenSize.height)) 

     view.addSubview(pointsLabel) 

これは、Idが正常にラベルを作る方法です、そしてMSMessagesAppViewControllerは、このような完全なビューであるとき、これは動作します:

enter image description here

しかしときに、このようにもセンターの配置はview.boundsに基づいていますが、ここでビューが縮小されると、ラベルは表示されずに表示されます。

enter image description here

アイブ氏は、これはサイズの変更が、しかしここでもセンターをリセットすると、何も行わないときに呼び出されることがわかった。ただ、異なる高さの間で前後にスイッチバック以外

override func willTransition(to presentationStyle: MSMessagesAppPresentationStyle) { 
     // Called before the extension transitions to a new presentation style. 

     // Use this method to prepare for the change in presentation style. 

     print(view.bounds.height) 
     pointsLabel.center = CGPoint(x: view.bounds.width * 0.5, y: view.bounds.width * 0.7) 
    } 

を、ラベルを追加するための正しい方法は何ですかプログラム的に?

答えて

0
かなり幅の部分よりも、 yのためにスーパーの高さを使用するように、中心の計算を変更

pointsLabel.center = CGPoint(x: view.bounds.width * 0.5, y: view.bounds.height * 0.5) 

、幅がとてもview.bounds.width * 0.7があなたをプッシュして、高さよりも実際に大きいコンパクトですが画面のラベルを外します。

関連する問題