2017-07-10 7 views
0

UITextViewの設定に問題があります。これには1桁の数字が入ります。私は、ビューが小さく、テキストが中央と水平の両方にあることを望みます。UITextViewのサイズと配置の設定

ビューをインスタンス化:

let setNumberView: UITextView = { 
     let view = UITextView(frame: CGRect(x: 0, y: 0, width: heightForView(text: "8", font: UIFont.systemFont(ofSize: 12), width: 25), height: heightForView(text: "8", font: UIFont.systemFont(ofSize: 12), width: 25))) 
     view.text = "1" 
     view.backgroundColor = .white 
     view.translatesAutoresizingMaskIntoConstraints = false 
     print("FONT SIZE: \(view.font?.pointSize)") 
     return view 
    }() 

セットアップ制約を:

/* setNumberView */ 

     let setDiameter = heightForView(text: "8", font: UIFont.systemFont(ofSize: 12), width: 25) 

     addConstraintsWithFormat("H:|-4-[v0]", views: setNumberView) 
     addConstraint(NSLayoutConstraint(item: setNumberView, attribute: .centerY, relatedBy: .equal, toItem: self, attribute: .centerY, multiplier: 1, constant: 0)) 
     //height 
     addConstraint(NSLayoutConstraint(item: setNumberView, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: setDiameter)) 
     //width 
     addConstraint(NSLayoutConstraint(item: setNumberView, attribute: .width, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: setDiameter)) 

しかし、私はこれが残っています:私の目標は「1を持つことである

enter image description here

白いボックスの中には、水平方向と垂直方向の中心があります。ここで

は、私は高さ/幅を取得しています方法です:

func heightForView(text:String, font:UIFont, width:CGFloat) -> CGFloat{ 
    let label:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: width, height: CGFloat.greatestFiniteMagnitude)) 
    label.numberOfLines = 0 
    label.lineBreakMode = NSLineBreakMode.byWordWrapping 
    label.font = font 
    label.text = text 
    label.sizeToFit() 

    return label.frame.height 
} 
+0

なぜサイズにのTextViewをuilabelを使うのか? uitextviewのスクロールを無効にして、その固有のサイズを使用しないようにしてください。 – agibson007

+0

これは私がいくつかのことに使う関数です。しかし、idk、私はmm初心者の提案を開いている – defoification

+0

スクロールを有効にするをオフにし、textview自体がuilabelのようなサイズになります。それを計算する高さ関数を作成するか、自動レイアウトと自動寸法を使用することができます。 – agibson007

答えて

0

はこれを試してみてください:

textView.textContainerInset = UIEdgeInsets.zero 
textView.textContainer.lineFragmentPadding = 0 
関連する問題