【发布时间】:2021-06-26 05:45:49
【问题描述】:
假设我有一个容器视图,它有一个 imageView 和 blurEffectView 作为它的子视图。简而言之,我在容器视图内的这个图像上应用了 blurEffect。
我在没有 IB 的情况下使用锚点以编程方式配置自动布局。而imageView和blurredEffectView的anchors和它们的容器视图完全一样。
我想知道是否有一种简单/快速的方法来执行aView.allAnchors.equals(bView's allAnchors) 之类的操作?这样我们就可以省去很多重复的代码了。
- container
- imageView
- blurEffectView
let container: UIView = {
let aView = UIView()
aView.translatesAutoresizingMaskIntoConstraints = false
return aView
}()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
navigationController?.navigationBar.prefersLargeTitles = true
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
configureLayout()
}
func configureLayout() {
let imageView = UIImageView(image: UIImage(named: "Wang Fei"))
// imageView.frame = container.bounds
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.contentMode = .scaleAspectFit
container.addSubview(imageView)
let blurEffect = UIBlurEffect(style: .dark)
let blurredEffectView = UIVisualEffectView(effect: blurEffect)
blurredEffectView.translatesAutoresizingMaskIntoConstraints = false
// blurredEffectView.frame = imageView.bounds
container.addSubview(blurredEffectView)
view.addSubview(container)
let g = view.safeAreaLayoutGuide
NSLayoutConstraint.activate([
container.topAnchor.constraint(equalTo: view.topAnchor),
container.leadingAnchor.constraint(equalTo: g.leadingAnchor),
container.trailingAnchor.constraint(equalTo: g.trailingAnchor),
container.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.42),
imageView.leadingAnchor.constraint(equalTo: container.leadingAnchor),
imageView.trailingAnchor.constraint(equalTo: container.trailingAnchor),
imageView.topAnchor.constraint(equalTo: container.topAnchor),
imageView.bottomAnchor.constraint(equalTo: container.bottomAnchor),
blurredEffectView.leadingAnchor.constraint(equalTo: container.leadingAnchor),
blurredEffectView.trailingAnchor.constraint(equalTo: container.trailingAnchor),
blurredEffectView.topAnchor.constraint(equalTo: container.topAnchor),
blurredEffectView.bottomAnchor.constraint(equalTo: container.bottomAnchor)
])
}
【问题讨论】:
-
你可以使用框架代替约束。
-
谢谢,你能告诉我一个关于如何用框架实现它的小sn-p吗?
标签: swift autolayout uikit