如何将 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 子视图放置在适当的位置的主要内容,如果未能解决你的问题,请参考以下文章

使用 IOS 中的约束将 UIView 中的子视图居中

UIView convertRect: - 找到子视图位置两个视图深

如何将 UIImageView 放置在子视图的特定区域中

将 UIView 添加为子视图并在 Swift 中确定它们在视图层次结构中的位置

旋转放置和移动视图 (UIView)

UIView 自动布局约束 wrt 父级