如何以针对不同尺寸显示器的模式排列多个 UIView
Posted
技术标签:
【中文标题】如何以针对不同尺寸显示器的模式排列多个 UIView【英文标题】:How to arrange many UIView in a pattern targeting different sized displays 【发布时间】:2017-07-04 11:36:11 【问题描述】:目标:
针对不同的 iPhone 和 iPad 尺寸的显示器,我想将许多小正方形 UIView
排列成一个图案。一旦安排到位,我希望能够控制每个UIView
,以便我可以操纵每个,例如,单独移动和缩放每个。
一种方法是在情节提要上手动放置许多小的UIView
(图1),确保有足够的小UIView
在最大的iPad屏幕上排列成图案,然后将它们全部连接起来代码。例如
@IBOutlet weak var myView001: UIView!
@IBOutlet weak var myView002: UIView!
...
...
@IBOutlet weak var myView144: UIView!
但是,上面的方法看起来很复杂,不够优雅。
问题:
我怎样才能动态(优雅地)创建许多小的
UIView
, 可以排列成适合最小的 iPhone 屏幕和 最大的 iPad 屏幕,可以用 Swift 代码操作吗?
图片 1:
【问题讨论】:
如何以编程方式创建视图并使用addSubview
?
这听起来很有趣,但是我如何以编程方式创建一个UIView
,以及如何定位它然后对其进行操作,例如移动或缩放它?
【参考方案1】:
这是一种创建子视图并将其添加到当前视图的方法:
let subview = UIView()
subview.backgroundColor = .black
subview.frame = CGRect(x: 10, y: 10, width: 30, height: 30)
self.view.addSubview(subview)
另一种初始化多个子视图的方式,例如10:
let subviews = (0 ..< 10).map _ in UIView()
for i in 0..<10
subviews[i].frame = CGRect(x: 10 * i, y: 10, width: 30, height: 30)
您需要识别框架,计算距离和视图的大小,并将它们添加到您当前的视图中。
【讨论】:
谢谢。我理解第一种方法的想法,但第二种方法对我来说并不是很清楚。您能否详细解释“初始化多个子视图”以及如何识别创建的每个子视图? 逻辑与前者类似,但使用起来应该更方便。我更新了我的答案。 非常感谢。这真的很有帮助。是 Swift 2 还是 3? @user4806509 很快 3.以上是关于如何以针对不同尺寸显示器的模式排列多个 UIView的主要内容,如果未能解决你的问题,请参考以下文章