Swift   发布时间:2022-04-29  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了swift – 在UIScrollView中看不到按钮大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 swift中以scrollview的形式制作了一个列表,其中视图由各种类型组成,例如标签,按钮等.

但是,当我将按钮添加到子视图时,显示了所有其他标签等,但它们不会显示.我也试过在约束和锚点搞乱.
另一方面,当我将相同的按钮添加到self.view.addsubview而不是scrollview.addsubview时,它们显示为不滚动,因为不再是scrollview的一部分.
我甚至删除标签,以确保按钮没有重叠(也没有工作)

我也尝试在“代码调试层次结构”(3D模式)中看到代码,即使我添加了它,我也看不到那里的按钮

下面是我的代码,带有标签,滚动视图和按钮的示例.如果有人能提供任何见解,那就太棒了…..非常感谢….

…………….滚动型……………………..

var ediTinfoView : UIScrollView = {

    let view = UIScrollView()
    view.translatesAutoresizingMaskIntoConsTraints = false
    view.contentSize.height = 700
    view.BACkgroundColor = tableBACkGroundColor
    view.frame = CGRect(x: 0,y: 220,width: 375,height: 400)

    return view
}()

…………………..标签……………….

vehiclenumberLabel.translatesAutoresizingMaskIntoConsTraints = false
    vehiclenumberLabel.textColor = .white
    vehiclenumberLabel.text = "Vehicle number"
    vehiclenumberLabel.textAlignment = .left

    ediTinfoView.addSubview(vehiclenumberLabel)

    vehiclenumberLabel.leftAnchor.consTraint(equalTo: ediTinfoView.leftAnchor).isActive = true
    vehiclenumberLabel.topAnchor.consTraint(equalTo: ediTinfoView.topAnchor,constant: 100).isActive = true
    vehiclenumberLabel.widthAnchor.consTraint(equalToConstant: 160).isActive = true
    vehiclenumberLabel.heightAnchor.consTraint(equalToConstant: 20).isActive = true

…………………按钮………………………. ….

vehiclenumberButton.translatesAutoresizingMaskIntoConsTraints = false
    vehiclenumberButton.settitleColor(tableTextColor,for: .normal)
    vehiclenumberButton.settitle("Vehicle number",for: .normal)
    vehiclenumberButton.TintColor = tableTextColor
    vehiclenumberButton.BACkgroundColor = tableTextColor

    ediTinfoView.addSubview(vehiclenumberButton)

    vehiclenumberButton.rightAnchor.consTraint(equalTo: ediTinfoView.rightAnchor).isActive = true
    vehiclenumberButton.topAnchor.consTraint(equalTo: ediTinfoView.topAnchor,constant: 400).isActive = true
    vehiclenumberButton.widthAnchor.consTraint(equalToConstant: 600).isActive = true
    vehiclenumberButton.heightAnchor.consTraint(equalToConstant: 255).isActive = true

解决方法

我无法确定您提供的代码和解释问题的根本原因,但我怀疑在将视图添加到CGRect.zero的viewDidAppear(_ :)之后,您的UIScrollView()的框架为零可能会导致布局引擎出现一些奇怪的行为.当我们以编程方式创建约束时,我们正在创建不等式,等式和优先级的组合,以将视图限制为特定帧.如果这些约束方程的值不正确,则会更改相关视图的显示方式.它的良好做法是避免使用leftAnchor和rightAnchor,因为视图可能会根据语言(书写方向)和用户设置来翻转方向.

ViewController.swift

import UIKit

class ViewController: UIViewController {

    var ediTinfoScrollView : UIScrollView = {
        let view = UIScrollView()
        view.translatesAutoresizingMaskIntoConsTraints = false
        view.isUserInteractionEnabled = true
        view.alwaysBounceVertical = true
        view.isScrollEnabled = true
        view.contentSize.height = 700
        view.BACkgroundColor = UIColor.red.withAlphaComponent(0.3)
        // Does nothing because `translatesAutoresizingMaskIntoConsTraints = false`
        // Instead,set the content size after activaTing consTraints in viewDidAppear
        //view.frame = CGRect(x: 0,height: 400)
        return view
    }()

    var vehiclenumberLabel: UILabel = {
        let label = UILabel()
        label.translatesAutoresizingMaskIntoConsTraints = false
        label.textColor = UIColor.black
        label.text = "Vehicle number"
        label.textAlignment = .left
        return label
    }()

    lazy var vehiclenumberButton: UIButton = {
        let button = UIButton()
        button.translatesAutoresizingMaskIntoConsTraints = false
        button.tag = 1
        button.settitleColor(UIColor.black,for: .normal)
        button.settitle("Go to Vehicle",for: .normal)
        button.TintColor = UIColor.white
        button.BACkgroundColor = UIColor.clear
        button.layer.cornerRadius = 30 // about half of button.frame.height
        button.layer.borderColor = UIColor.black.cgColor
        button.layer.borderWidth = 2.0
        button.layer.masksToBounds = true
        button.addTarget(self,action: #SELEctor(handelButtons(_:)),for: .touchUpInsidE)
        return button
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.BACkgroundColor = UIColor.white

        self.setupSubviews()

    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        self.ediTinfoScrollView.contentSize = CGSize(width: self.view.frame.width,height: 700.0)
    }

    func setupSubviews() {
        self.view.addSubview(ediTinfoScrollView)
            ediTinfoScrollView.addSubview(vehiclenumberLabel)
            ediTinfoScrollView.addSubview(vehiclenumberButton)

        let spacing: CGFloat = 12.0

        let consTraints:[NSLayout@R_673_2736@ = [

            ediTinfoScrollView.widthAnchor.consTraint(equalTo: self.view.widthAnchor),ediTinfoScrollView.heightAnchor.consTraint(equalToConstant: 400.0),ediTinfoScrollView.centerXAnchor.consTraint(equalTo: self.view.centerXAnchor),ediTinfoScrollView.centerYAnchor.consTraint(equalTo: self.view.centerYAnchor,constant: 220.0),vehiclenumberLabel.leadingAnchor.consTraint(equalTo: ediTinfoScrollView.leadingAnchor,constant: spacing),vehiclenumberLabel.TrailingAnchor.consTraint(equalTo: ediTinfoScrollView.TrailingAnchor,constant: -spacing),vehiclenumberLabel.centerXAnchor.consTraint(equalTo: ediTinfoScrollView.centerXAnchor,constant: -50),vehiclenumberLabel.heightAnchor.consTraint(equalToConstant: 75.0),vehiclenumberButton.widthAnchor.consTraint(equalTo: ediTinfoScrollView.widthAnchor,multiplier: 0.66),vehiclenumberButton.heightAnchor.consTraint(equalToConstant: 65.0),vehiclenumberButton.topAnchor.consTraint(equalTo: vehiclenumberLabel.bottomAnchor,vehiclenumberButton.centerXAnchor.consTraint(equalTo: ediTinfoScrollView.centerXAnchor),]

        NSLayoutConsTraint.activate(consTraints)
    }



    @objc func handelButtons(_ sender: UIButton) {

        switch sender.tag {
        case 0:
            print("Default button tag")
        case 1:
            print("vehiclenumberButton was tapped")
        default:
            print("Nothing here yet")
        }

    }


}

大佬总结

以上是大佬教程为你收集整理的swift – 在UIScrollView中看不到按钮全部内容,希望文章能够帮你解决swift – 在UIScrollView中看不到按钮所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。