首页 > 解决方案 > 当父 UIview 的约束减少时,如何使 swift UIview 子元素自动缩小?

问题描述

class ViewController{                

    @IBOutlet weak var UiCalendarView: UIView!
    @IBOutlet weak var UiCalendarViewConstraint: NSLayoutConstraint!
    let calendar = FSCalendar(frame: CGRect(x: 0, y: 0, width: 373, height:300))


    override func viewDidLoad() {
        super.viewDidLoad()
        UiCalendarView.addSubview(self.calendar)
        UiCalendarViewConstraint.constant = 23
    }
}

但是UiCalendarViewConstraint.constant更改并没有太大作用,因为子组件calendar具有自己的高度并且保持不变。

标签: iosswift

解决方案


您需要向子项添加约束并在父项的大小更改时捕获参考,您根据高度更改子项的约束。但是,如果您从顶部和底部将子级与父级固定在一起,它会在父级大小更改时自动更改

let parentView = UIView()
let childView = UIView()
parentView.addSubView(childView)
childView.translatesAutoresizingMaskIntoConstraints = false
parentView.translatesAutoresizingMaskIntoConstraints = false

childView.topAnchor.constraint(equalTo: parentView.topAnchor).isActive = true
childView.bottomAnchor.constraint(equalTo: parentView.bottomAnchor).isActive = true
childView.leadingAnchor.constraint(equalTo: parentView.leadingAnchor).isActive = true
childView.trailingAnchor.constraint(equalTo: parentView.trailingAnchor).isActive = true

当您将自动更改父级的高度或宽度时,此代码片段将让子级填充父视图,它将调整其大小。


推荐阅读