如何将 UIView 子视图放置在适当的位置
Posted
技术标签:
【中文标题】如何将 UIView 子视图放置在适当的位置【英文标题】:How to Put UIView subview In Places 【发布时间】:2017-03-08 04:35:54 【问题描述】:例如,假设我有一个要显示的 UIView
view.addSubview(line)
现在我希望能够在右上角显示该 UIView。让我们说在导航栏的右侧。我该怎么做?甚至在特定的地方。
【问题讨论】:
你能告诉 UI 你期望的输出类型吗 【参考方案1】:您将需要计算框架或需要为该视图提供约束。
let screenSize = UIScreen.main.bounds
let screenWidth = screenSize.width
let screenHeight = screenSize.height
从上面您可以获得屏幕宽度,您可以将 y 设置为 0。假设您的视图的宽度高度为 20。因此,框架如下所示。
yourView.frame = CGRect(x:screenwidth - 20 , y: 20, width:20 , height: 20)
您可以根据需要更改框架。
对于导航栏,有一个更好的方法是添加右栏项目。看看下面的代码怎么做。
self.navigationItem.rightBarButtonItem = rightButtonItem
【讨论】:
你看到了吗inside the right side of the navigation bar.
@Anbu.Karthik 哦,我错过了【参考方案2】:
你可以使用
self.navigationController?.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: lineMat)
在导航栏右侧设置视图。
您还可以在UIApplication.shared.keyWindow
上添加lineMat
视图
只需使用UIApplication.shared.keyWindow?.addSubview(lineMat)
并设置为lineMat
视图的框架。
【讨论】:
【参考方案3】:为您的子视图添加一个框架,如:
目标-C:
line.frame = CGRectMake(0, 0, 50, 50);
斯威夫特 3:
CGRect(x:0,y:0,width: 50,height: 50)
这将在左上角添加您的线子视图,高度为 50,宽度为 50。
【讨论】:
Swift 3: CGRect(x:0,y:0,width: 50,height: 50) 非常感谢! 谢谢@nil。添加快速部分来回答:)以上是关于如何将 UIView 子视图放置在适当的位置的主要内容,如果未能解决你的问题,请参考以下文章
UIView convertRect: - 找到子视图位置两个视图深