Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将UILabel添加到自定义UIView,但不在UIImage视图上显示_Ios_Swift_Uiview_Uilabel - Fatal编程技术网

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

Ios 将UILabel添加到自定义UIView,但不在UIImage视图上显示,ios,swift,uiview,uilabel,Ios,Swift,Uiview,Uilabel,因此,我需要一些自定义视图,其中将包含一些元素。我希望能够以编程方式设置所有视图,以习惯不使用interface builder 我已添加图像,但无法使标签显示在UIImageview上。我对代码做了一些修改,但似乎无法使其正常工作。我肯定我错过了一些愚蠢的事情,但我能找到答案。下面是自定义视图的代码。将为视图控制器文件中的每个自定义视图添加图像和标签文本 import UIKit class IntroButton: UIView { let mainImage = UIIm

因此,我需要一些自定义视图,其中将包含一些元素。我希望能够以编程方式设置所有视图,以习惯不使用interface builder

我已添加图像,但无法使标签显示在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(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)

将图元添加到视图时,它们将按照添加顺序分层

更改此项:

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)