繁体   English   中英

子视图的大小不等于其父视图

[英]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()

在此处输入图片说明

您的闪存卡视图为UIView。您想使其全屏显示,然后按照此操作进行操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM