2017-04-15 8 views
0

の大きさにUIViewのサイズを変更:は、私は次のようになりますのUIViewを作成したいのUILabelのサブビュー

The label "Tag" inside a rounded rectangle.

私はいつもそれ内のテキストに自分自身のサイズを変更するには、このビューをしたいと思います。私はこのような何か試してみました:

import UIKit 

@IBDesignable class TagView: UIView { 

    @IBInspectable var tagTitle: String? 

    override func awakeFromNib() { 
     super.awakeFromNib() 

     setUpView() 
    } 

    func setUpView() { 
     let label = UILabel() 
     label.text = tagTitle 
     addSubview(label) 

     layer.cornerRadius = 15 
     frame = CGRect(origin: frame.origin, size: sizeThatFits(label.frame.size)) 
    } 

} 

をしかし、これはすべてのビューのframeを変更しません。理由は、自動レイアウトが有効になっているからだと思います。

この効果を得るには何ができますか?私は間違った視点からこれに近づいていますか?

答えて

0

は、ラベルに等しい幅をビューの幅制約を追加してみsetUpView()メソッド

func setUpView() { 
    let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21)) 
    label.center = CGPoint(x: 160, y: 285) 
    label.text = tagTitle 
    label.layer.masksToBounds = true 
    label.layer.cornerRadius = 15 
    self.view.addSubview(label) 

     } 
+0

残念ながらそれは動作しません。私はもはや「ウイラーベル」はもう見ない。 – hattenn

0

ため、このコードを試してみてください。同様に高さにもそうする。

+0

私はこれを行い、 'translatesAutoresizingMaskIntoConstraints = false'を使用しますが、それは動作しますが、画面上にその場所を保持しなくなり、(0、0)に配置されます。 – hattenn

+0

垂直方向と水平方向の制約を追加する –

関連する問題