Objective c 相对于屏幕属性定位子视图
我想将多个小UIView显示为相对于屏幕属性的子视图。这应该适用于不同的屏幕尺寸(iPad、iPhone)/纵向/横向模式 要显示的每个子视图都有两个NSNumber对象,其无符号整数范围为-100(最小值)到100(最大值),需要映射到正确的x和y坐标进行定位Objective c 相对于屏幕属性定位子视图,objective-c,ios,uiview,Objective C,Ios,Uiview,我想将多个小UIView显示为相对于屏幕属性的子视图。这应该适用于不同的屏幕尺寸(iPad、iPhone)/纵向/横向模式 要显示的每个子视图都有两个NSNumber对象,其无符号整数范围为-100(最小值)到100(最大值),需要映射到正确的x和y坐标进行定位 转换这些值(-100…100)的最佳方法是什么,以便在屏幕上定位UIView 我如何以相对的方式而不是绝对的方式定位它们,以便代码在屏幕旋转和屏幕大小之间工作 如果使用+/-100范围,则可能需要使用底层Calayer来定位视图。CA
- 转换这些值(-100…100)的最佳方法是什么,以便在屏幕上定位UIView李>
- 我如何以相对的方式而不是绝对的方式定位它们,以便代码在屏幕旋转和屏幕大小之间工作
UIScreen
的高度和宽度
:
CGFloat width = [UIScreen mainScreen].bounds.size.width;
CGFloat height = [UIScreen mainScreen].bounds.size.height;
但这不包括轮换。我所知道的另一种非常简单的方法是询问覆盖屏幕的ui视图的宽度和高度(最简单的方法是,您可以使viewcontroller的视图覆盖整个屏幕)
如果您有一个完全覆盖整个屏幕的UIView
(我们称之为myView),您可以尝试:
CGFloat width = myView.frame.size.width;
CGFloat height = myView.frame.size.height;
这些应自行调整方向(根据我的经验,如果您在视图中获得高度
和宽度
,则它肯定会起作用。如果没有,则必须实现UIView
或之后的任何内容。此外,UIView
需要是UIViewController
的视图属性或此视图的子视图。如果没有,则必须实现didroteratefrominterface。)方向:
或找到其他方法来告诉您的视图任何旋转)。一旦我们有了屏幕的“宽度”和“高度”,我们就可以从int转换到屏幕位置。请尝试以下操作:
(CGPoint)convertX:(NSNumber *)x andY:(NSNumber *)y intoPoint
{
pointX = ([x intValue] + 100.0)*width/200.0;
pointY = (-[y intValue] + 100.0)*height/200.0; // remove the - sign at the front of the expression for y to grow as you move down the screen
return CGPointMake(pointX, pointY);
}
将x和y中的-100转换为100,并转换为屏幕上各自的点