繁体   English   中英

将 UILabel 添加到自定义 UIView 但不显示在 UIImage 视图上

[英]Adding UILabel to custom UIView but not displaying over UIImage view

所以我需要一些包含一些元素的自定义视图。 我希望能够以编程方式设置所有视图以习惯不使用界面构建器。

我已经添加了图像,但无法让标签出现在 UIImageview 上。 我已经玩过一些代码,但似乎无法让它工作。 我确定这一定是我错过的一些愚蠢的事情,但可以弄清楚。 下面是自定义视图的代码。 视图控制器文件中的每个自定义视图都添加了图像和标签文本。

import UIKit

class IntroButton: UIView {    
    let mainImage = UIImageView()
    let titalBackground = UIView()
    let mainTital = UILabel()

    override init(frame: CGRect) {
        super.init(frame: frame)
        addSubview(mainTital)
        addSubview(mainImage)
        addSubview(titalBackground)
        setUpTital()
        setUpImage()
        setUpButton()

    }

    required init?(coder: NSCoder) {
        super.init(coder: coder)
        addSubview(mainTital)
        addSubview(mainImage)
        addSubview(titalBackground)
        setUpTital()
        setUpButton()
        setUpImage()

    }

    func setUpButton() {
        //basic view setup
        layer.cornerRadius = 20
        layer.shadowColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
        layer.shadowRadius = 20
        layer.shadowOpacity = 100
        layer.shadowOffset = CGSize(width: 10, height: 10)
        layer.masksToBounds = true
    }

    //helps with adding image and content to view
    override var intrinsicContentSize: CGSize{
        return CGSize(width: 200, height: 300)

    }

    func setUpImage() {
        //adding image to the main view and image constraints
        mainImage.contentMode = .scaleAspectFill
        mainImage.translatesAutoresizingMaskIntoConstraints = false
        mainImage.topAnchor.constraint(equalTo: self.topAnchor).isActive = true
        mainImage.bottomAnchor.constraint(equalTo: self.bottomAnchor).isActive = true
        mainImage.leadingAnchor.constraint(equalTo: self.leadingAnchor).isActive = true
        mainImage.trailingAnchor.constraint(equalTo: self.trailingAnchor).isActive = true
        mainImage.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
        mainImage.setContentCompressionResistancePriority(.defaultLow, for: .vertical)
    }

    func setUpTital() {
        mainTital.font = UIFont(name: "Futura", size: 25)
        mainTital.textColor = .white
        mainTital.translatesAutoresizingMaskIntoConstraints = false
        mainTital.heightAnchor.constraint(equalToConstant: 100).isActive = true
        mainTital.widthAnchor.constraint(equalToConstant: self.frame.width).isActive = true
        mainTital.bottomAnchor.constraint(equalTo: self.bottomAnchor).isActive = true
        mainTital.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true
        mainTital.textAlignment = .left
        mainTital.clipsToBounds = true
    }
}

您最多将标签添加回变更单

addSubview(mainImage)
addSubview(titalBackground) 
addSubview(mainTital) /// last 1 appears at most top 

当您向视图添加元素时,它们将按照您添加的顺序分层。

改变这个:

addSubview(mainTital)
addSubview(mainImage)
addSubview(titalBackground)

对此:

// add main image
addSubview(mainImage)
// add tital background *on top of* main image
addSubview(titalBackground)
// add main tital *on top of* tital background
addSubview(mainTital)

暂无
暂无

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

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