在 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 的扩展功能?