在 Swift 中让 UIView 粘在 ViewController 框架的底部

Posted

技术标签:

【中文标题】在 Swift 中让 UIView 粘在 ViewController 框架的底部【英文标题】:Make a UIView stick to bottom of the ViewController frame in Swift 【发布时间】:2015-06-10 21:01:01 【问题描述】:

我创建了一个 UIView(它只是一个蓝色矩形),我希望它贴在屏幕框架/视图的底部。

var nextBar = UIView()

nextBar.backgroundColor = UIColor(red: 7/255, green: 152/255, blue: 253/255, alpha: 0.5)
nextBar.frame = CGRect(x: 0, y: 600, width: self.view.frame.width, height: 50)
self.view.addSubview(nextBar)

我假设我需要在 CGRect 中的 'y:' 部分之后添加一些内容,但我似乎无法让它工作或找到任何可以快速显示我的地方。

提前致谢

【问题讨论】:

【参考方案1】:

嗯,试试这个……

override func viewDidLoad() 
  super.viewDidLoad()

  let theHeight = view.frame.size.height //grabs the height of your view

  var nextBar = UIView()

  nextBar.backgroundColor = UIColor(red: 7/255, green: 152/255, blue: 253/255, alpha: 0.5)

  nextBar.frame = CGRect(x: 0, y: theHeight - 50 , width: self.view.frame.width, height: 50)

  self.view.addSubview(nextBar)


对于 CRect 中的 'y:',您将获取屏幕尺寸的高度(高度),并减去所需的像素数。无论屏幕尺寸如何,它都会显示相同。

【讨论】:

谢谢,你能解释一下 * 0.95 的原因和作用吗? 是的。因此,当您创建“let theHeight..”时,您将采用屏幕尺寸的浮动。无论是 4s、5s、6 还是 6+。所以这个数字是屏幕的最大尺寸。 '0.95' 是小数或表示 95%。这就像说,有一个 100 英尺长的房间,有人告诉你指出房间尽头 95% 的位置,你会大致猜对,不管房间是 20 英尺、50 英尺还是 100 英尺长......它只是一个百分比 (%)...它有效吗? 谢谢。它确实将视图放置在框架的底部(我将其设置为 0.915),但它会根据它所在的屏幕尺寸而有所不同。所以它在 5s 上看起来不错,但在 iPhone 6 上它又不合适了。 或:'...y: theHeight - 20...' 。您将屏幕尺寸减去您想要的像素数。让我知道它是否有效,因为我需要一些积分!大声笑 成功了!!我将它设置为我制作视图的高度(在本例中为 50)所以:theHeight - 50,感谢您的帮助,如果您修改上面所做的答案,我会为您接受!【参考方案2】:

您可以使用约束以编程方式完成

fileprivate func setupName()
        let height = CGFloat(50)

        lblName.text = "Hello world"
        lblName.backgroundColor = .lightGray

        //Step 1
        lblName.translatesAutoresizingMaskIntoConstraints = false

        //Step 2
        self.view.addSubview(lblName)

        //Step 3
        NSLayoutConstraint.activate([

            lblName.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor),
            lblName.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor),
            lblName.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor,constant: -height),
            lblName.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor),
            ])

    

详情请咨询link

【讨论】:

【参考方案3】:

像这样:

view.addConstraintsWithFormat(format: "V:[v0(50)]|", views: nextBar)

【讨论】:

以上是关于在 Swift 中让 UIView 粘在 ViewController 框架的底部的主要内容,如果未能解决你的问题,请参考以下文章

如何在包装器 Swift View 中使用自定义 UIView 的扩展功能?

在 Swift 中像 Tab View Controller 一样滑动 uiView

如何让 UIButton 粘在 UIView 的底部

自定义 UIView 类 - Swift

Swift之动画总结

Swift UIView 背景颜色不透明度