首页 > 解决方案 > Swift - 约束 UITextView

问题描述

我有 aUITextView并且我想以与 a 相同的方式约束它UILabel。但是,如果我使用constrains与 a 相同的方法,我会UILabel得到不同的结果。我也不太了解它是如何UITextView.frame工作的,因为我设置什么并不重要height/width,结果保持不变。

下图中的“LinkTest”是我的UITextView. 如您所见,UILabels即使我constrain以相同的方式,它也没有与下面对齐。

在此处输入图像描述

UITextView:

    let linkLabel: UITextView = {
        let v = UITextView()
        v.backgroundColor = .clear
        v.text = "Link"
        v.textColor = .lightGray
        v.font = UIFont(name: "AvenirNext-Regular", size: 18)
        v.textAlignment = .right
        v.isSelectable = false
        v.isScrollEnabled = false
        v.frame = CGRect(x: 0, y: 0, width: 20, height: 20)
//        v.attributedText = NSAttributedString(string: "", attributes: [.underlineStyle: NSUnderlineStyle.single.rawValue])
        v.translatesAutoresizingMaskIntoConstraints = false
        return v
    }()

约束:

// constrain linkLabel
    linkLabel.topAnchor.constraint(equalTo: linkImage.topAnchor).isActive = true
    linkLabel.leadingAnchor.constraint(equalTo: linkImage.leadingAnchor, constant: 30).isActive = true
    linkLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -20).isActive = true

    // constrain priceLabel
    priceLabel.topAnchor.constraint(equalTo: linkLabel.topAnchor, constant: 35).isActive = true
    priceLabel.leadingAnchor.constraint(equalTo: linkImage.leadingAnchor, constant: 30).isActive = true
    priceLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -20).isActive = true

    // constrain noteLabel
    noteLabel.topAnchor.constraint(equalTo: priceLabel.topAnchor, constant: 35).isActive = true
    noteLabel.leadingAnchor.constraint(equalTo: linkImage.leadingAnchor, constant: 30).isActive = true
    noteLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -20).isActive = true

我很感激这方面的任何帮助:)

标签: iosswiftconstraintsuilabeluitextview

解决方案


解决方案:

问题是UITextViews padding. 删除所有填充解决了问题:

let padding = v.textContainer.lineFragmentPadding
 v.textContainerInset =  UIEdgeInsets(top: 0, left: -padding, bottom: 0, right: -padding)

推荐阅读