UICollectionViewCell锚点/约束男生错误

时间:2019-04-02 18:34:12

标签: swift uicollectionviewcell

我有一个带有特大标签(我需要将其截断)和UIStackView中的UISwitch的布局问题。 UI呈现显然不正确,请参见屏幕快照https://www.dropbox.com/s/ankoovfh874kgy7/AlignmentTruncation.jpg

很显然,这已经太晚了,我凝视了太久了。如果有人可以帮助我解决这个男生错误,我将不胜感激。

Dev环境Xcode 10.2(10E125),macOS Mojave 10.14.5 Beta。

谢谢

迈克


class SwitchableOptionCell : UICollectionViewCell {

    let switchView : UISwitch = {
        let sv = UISwitch()
        return sv
    }()

    let labelView : UILabel = {
        let lv = UILabel()
        lv.backgroundColor = .red
        lv.text = "The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog"
        lv.lineBreakMode = .byTruncatingTail
        return lv
    }()

    override init(frame : CGRect)
    {
        super.init(frame : frame)

        let sv = UIStackView(arrangedSubviews: [labelView, switchView])
        sv.spacing = 12
        sv.alignment = .center

        addSubview(sv)

        sv.translatesAutoresizingMaskIntoConstraints = false

        sv.topAnchor.constraint(equalTo: self.topAnchor).isActive = true
        sv.leadingAnchor.constraint(equalTo : self.leadingAnchor, constant: 16).isActive = true
        sv.bottomAnchor.constraint(equalTo : self.bottomAnchor).isActive = true
        sv.trailingAnchor.constraint(equalTo : self.trailingAnchor, constant: -16).isActive = true
    }

    required init?(coder aDecoder : NSCoder)
    {
        fatalError("init(coder:) has not been implemented")
    }
}

1 个答案:

答案 0 :(得分:0)

只要尝试改变         sv.alignment = .center 至         sv.alignment = .fill 要么         sv.alignment = .fillProportionaly

问题可能与uiswitch有关。他不知道他的实际宽度。因此,您可以尝试为具有宽度限制的uiswitch创建一些容器