2016-03-26 24 views
0

UIViewを作成しています。UIImageViewUILabelを入力してください。 ここにはそのクラスがあります。私はUIViewControllerからこのビューのインスタンスを作成するたびに即時のカスタムUIView

import UIKit 

class AnswersCustomView: UIView { 
    var myImageView = UIImageView() 
    var myLabel = UILabel() 
    override init (frame : CGRect) { 
     super.init(frame : frame) 
     backgroundColor = UIColor.blueColor() 
     addLabel() 
     bringSubviewToFront(myLabel) 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
    } 
    func addLabel(){ 
     let myViewFrame = self.frame 
     myLabel.frame = myViewFrame 
     myLabel.backgroundColor = UIColor.redColor() 
     myLabel.center=self.center 

     addSubview(myLabel) 
    } 


} 

UIViewが追加されますが、UILabelはそうではないようです。何か理由がありますか? ?

+0

であなたのビュー階層を表示する新しいツールを追加しました。 – James

+0

IBOutletをXibファイルからAnswersCustomViewに参照する必要があります。 – Khuong

+1

ラベルにはビューの枠が含まれている必要があります。ビューのフレームではありません。 – Hamish

答えて

1

すでにコメントに指摘されているように、ラベルには不正なフレームが含まれている可能性があります。
アップルドキュメントのフレームを述べたようである:

この矩形は、その スーパーの座標系におけるビューのサイズと位置を定義します。レイアウト の操作中にこの矩形を使用して、ビューのサイズと配置を行います。このプロパティを設定すると、 は、centerプロパティで指定されたポイントと、 の境界矩形に応じてサイズを変更します。フレーム矩形 の座標は常にポイントで指定されます。

作成したラベルは、インスタンスAnswersCustomViewのサブビュー、ないAnswersCustomViewスーパービューであるので、あなたはそのスーパービューの境界として、ラベルの枠を設定する必要があります。

もう1つはautolayoutです:あなたはそれを使用していません。 AnswerViewをどのように作成するのかわかりません。最初のフレームが0の場合、ラベルはゼロのままです。それを追加し、制約を設定するか、少なくともマスクを自動サイズ変更する必要があります。
xibにビューを作成している場合は、この場合はiniWithCoderが呼び出され、ここにはラベルは表示されません。アップルのデバッグビューを簡素化するために

は、ラベルが空である3D https://www.raywenderlich.com/98356/view-debugging-in-xcode-6

関連する問題