代码之家  ›  专栏  ›  技术社区  ›  ahmetvefa53

stackview中的ios customview拥抱问题

  •  0
  • ahmetvefa53  · 技术社区  · 7 年前

    我有一个自定义的日期视图(垂直的日期、月份和年份)。 我想将此视图与另一个stackview一起在水平stackview中使用。我的自定义视图必须包装其内容。例如,最大的内容是month=december,因此视图的宽度必须与december相同。当我在stackview中使用它时,它的宽度是不可调的。自定义视图的代码如下。为什么我的视图的宽度是hugging?我不想把它定高。

     override init(frame: CGRect) {
        super.init(frame: frame)
        prepare()
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        prepare()
    }
    
    fileprivate func prepare() {
        self.backgroundColor = UIColor.white
        let itemStack = UIStackView()
        itemStack.axis = .vertical
        itemStack.alignment = .center
        itemStack.isLayoutMarginsRelativeArrangement = true
        itemStack.translatesAutoresizingMaskIntoConstraints = false
        day.text = "28"
        month.text = "Ağustos"
        year.text = "2015"
        itemStack.addArrangedSubview(day)
        itemStack.addArrangedSubview(month)
        itemStack.addArrangedSubview(year)
    
        self.addSubview(itemStack)
        self.topAnchor.constraint(equalTo: itemStack.topAnchor).isActive = true
        self.bottomAnchor.constraint(equalTo: itemStack.bottomAnchor).isActive = true
        self.leadingAnchor.constraint(equalTo: itemStack.leadingAnchor).isActive = true
        self.trailingAnchor.constraint(equalTo: itemStack.trailingAnchor).isActive = true
    }
    
    fileprivate func formatValue() {
        day.text = value?.toString(dateFormat: DateFormat.dd)
        month.text = value?.toString(dateFormat: DateFormat.MMMM)
        year.text = value?.toString(dateFormat: DateFormat.yyyy)
        layoutIfNeeded()
    }
    
    0 回复  |  直到 7 年前