![](/img/trans.png)
[英]Resize a superview to make its size equal to the the size of its subviews
[英]Subview's size not equal to its superview
问题:
黄色部分是子视图( 子视图是UIImageView,超级视图是UIView。 ),它的大小假定与超级视图相同(灰色部分),我应该怎么做才能解决此问题?
屏幕图像:
这是代码:
var linkedMemory = Memory(masteryLevel: 1, algorithm: Algorithm.algorithm1.chooseAlgorithm(), forgetRatio: 0, lastStudyTime: Date(), front: #imageLiteral(resourceName: "Ideas-Yellow"), back: #imageLiteral(resourceName: "Ideas-Blue"))
var frontView: UIView {
let front = showContent(of: linkedMemory.front)
return front
}
convenience init(memory: Memory) {
self.init(frame: CGRect())
self.linkedMemory = memory
self.setupView()
}
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupView()
}
func setupView() {
self.layer.cornerRadius = 20
self.layer.shadowRadius = 12
self.layer.shadowOpacity = 0.15
self.layer.masksToBounds = true
addGesture()
sizeNAddSubview(view: frontView)
}
func sizeNAddSubview(view: UIView) {
view.frame.size = self.bounds.size
addSubview(view)
}
func showContent(of linkenMemory: Any) -> UIView {
var contentView = UIView()
if let content = linkenMemory as? UIImage {
let imageView = UIImageView()
imageView.image = content
contentView = imageView
}
if let content = linkedMemory as? String {
let label = UILabel()
label.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true
label.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true
let text = content
label.text = text
contentView = label
}
return contentView
}
这里是约束:
您可以将约束设置为相等的Superview高度和相等的宽度[或]如果要在布局通过之前设置此视图,则Superview的大小将不是实际大小,因此必须将代码移至任一viewDidAppear()
或viewDidLayoutSubviews()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.