我想显示多个小UIViews作为相对于屏幕属性的Subviews。这应该适用于不同的屏幕尺寸(iPad,iPhone)/纵向/横向模式。
要显示的每个子视图都有两个带有unsigned int的NSNumber对象,范围从 -100 (min)到 100 (max),需要映射到正确的<用于定位的strong> x 和 y 坐标。
答案 0 :(得分:1)
好的,所以如果我理解正确你想要x方向上的-100映射到屏幕上最左边的点,x中的100映射到屏幕上最右边的点,y中的-100映射到屏幕上最低点的方向,以及y中100以映射到屏幕上的最高点(或者你可能希望y与我所拥有的相反,以便它与y变得更大的屏幕坐标系一致你得到的屏幕下方?)。 我们还想考虑轮换。
据我了解,请UIScreen
查询height
和width
:
CGFloat width = [UIScreen mainScreen].bounds.size.width;
CGFloat height = [UIScreen mainScreen].bounds.size.height;
但这并不考虑轮换。我所知道的唯一另一种方法就是让UIView
覆盖屏幕上的width
和height
(最简单的说,你可以让你的viewcontroller视图覆盖整个屏幕)。
如果你有一个完全覆盖整个屏幕的UIView
(我们称之为myView),你可以尝试:
CGFloat width = myView.frame.size.width;
CGFloat height = myView.frame.size.height;
这些应该自行调整方向(根据我的经验,如果你在height
或之后的任何内容中得到width
和viewDidAppear:animated:
,那么它肯定会有用。还有{{1} }需要是UIView
的视图属性或此视图的子视图。如果没有,您将必须实现UIViewController
或找到其他方式来告诉您有关任何旋转的视图)。一旦我们拥有屏幕的“宽度”和“高度”,我们就可以将您的int转换为屏幕位置。尝试类似:
didRotateFromInterfaceOrientation:
在x和y中将-100转换为100到屏幕上各自的点。
答案 1 :(得分:0)
如果您正在使用+/- 100的范围,那么您可能希望使用基础CALayers来定位您的视图。关于CALayers的好处是,它们的锚点被映射到设备无关的网格,在笛卡尔平面上的范围从0.0到+1.0。