2016-07-24 5 views
0

私はそれぞれ異なるテキストのステートメント(UITextViewsで)を含むUIViewを作成しようとしています。ビュー数はさまざまで、各ステートメントの長さが異なる場合があります。私はその後、viewNumberを使用して文にアクセスし、私が作ったnibファイル内のテキストラベルに文を入れDragViewクラスでどのようにプログラム内でtextLabelsの高さであるUIViewを作成するのですか? (スウィフトで)

let newView = DragView(heightOfView: ???, viewNumber: i, heightFromTop: currentHeightForThings) 

を使用してこれらのビューを作ります。

私の問題はheightOfViewに置くことは何もありません。私が望む高さは、textLabelの高さです。これは、ステートメントのtextViewにいくつの行があるかによって異なります。しかし、textLabelはまだ構築されていないので、私はこの高さにアクセスできません。

事前に感謝していますが、私は速く新しいですが、速く学びたいので、明らかに何かが欠けている場合はお詫びします!


相続人は、私はクラスDragViewに

class DragView: UIView { 

@IBOutlet var dragView: UIView!  
@IBOutlet weak var statementLabel: UITextView! 

var dropTarget: UIView? 
var viewNumber: Int! 

init(heightOfView: Int, viewNumber:Int, heightFromTop: Int){ 
    self.viewNumber = viewNumber 
    let startingPosition = CGRect(x: Int(widthCentre) - dragViewWidth/2, y: heightFromTop, width: dragViewWidth, height: heightOfView) 
    super.init(frame: startingPosition) 

    NSBundle.mainBundle().loadNibNamed("DragView", owner: self, options: nil) 

    self.addSubview(self.dragView)  
    let movingView = MovingView(frame: startingPosition) 
    self.addSubview(movingView) 
} 
required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 
} 
} 

を持っているコードは、ここにmovingViewは、私はビューを移動するビューの上に追加サブビューです。

答えて

0

DragViewsizeThatFitsメソッドをオーバーライドして、statementLabelの高さに基づいて高さを戻すことができます。最初にsizeToFittextViewに呼び出し、そのビューの高さを設定し、それに基づいて高さを返します。

override func sizeThatFits(size: CGSize) -> CGSize { 
    self.statementLabel.sizeToFit() 
    return CGSize(
     width: self.frame.width, 
     height: self.statementLabel.frame.height) 
} 

また、私はあなたがプログラムによるレイアウトを行うこととしている場合sizeThatFitslayoutSubviewsに探してお勧めします。サブビューのサイズと位置はinitではなくlayoutSubviewsにあるはずです。

+0

私はsizeToFitのドキュメントを勉強しました。 –

+0

あなたはこの回答を受け入れることができますか? –

関連する問題