Ios 设置UITextView';s尺寸和对齐方式

Ios 设置UITextView';s尺寸和对齐方式,ios,swift,Ios,Swift,我在设置包含一位数的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

我在设置包含一位数的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”水平和垂直居中

以下是我获得高度/宽度的方法:

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
}
试试这个:

textView.textContainerInset = UIEdgeInsets.zero
textView.textContainer.lineFragmentPadding = 0

为什么要使用uilabel调整textview的大小?为什么不禁用uitextview上的滚动以使其使用其固有大小?我使用它来实现一些功能。但是idk,我是一个初学者,他对建议持开放态度。关闭滚动功能,文本视图的大小就会像uilabel一样。您可以使用高度函数来计算它,也可以使用自动布局和自动标注。uitextview的另一个特点是您可能需要远程插入