gpt4 book ai didi

objective-c - 相对于屏幕区域的 subview 位置

转载 作者:行者123 更新时间:2023-11-29 04:32:04 26 4
gpt4 key购买 nike

我想将多个小的 UIView 显示为相对于屏幕空间的 subview 。这应该适用于不同的屏幕尺寸(iPad、iPhone)/纵向/横向模式。

要显示的每个 subview 都有两个 NSNumber 对象,其无符号整数范围从 -100(最小值)到 100(最大值),需要映射到正确的<用于定位的strong>x和y坐标。

  • 转换这些值 (-100...100) 以使用它们在屏幕上定位 UIView 的最佳方式是什么?
  • 如何以相对方式而不是绝对方式定位它们,以便代码可以跨屏幕旋转和屏幕尺寸工作?

最佳答案

好吧,如果我理解正确的话,你希望 x 方向上的 -100 映射到屏幕上最左边的点,x 方向上的 100 映射到屏幕上最右边的点,y 方向上的 -100方向映射到屏幕上的最低点,y 中的 100 映射到屏幕上的最高点(或者您可能希望 y 与我所拥有的相反,以便它与 y 变大的屏幕坐标系一致)您看到的屏幕下方是什么?)。我们还想考虑轮换。

据我了解,询问UIScreen高度宽度:

CGFloat width = [UIScreen mainScreen].bounds.size.width;
CGFloat height = [UIScreen mainScreen].bounds.size.height;

但这并没有考虑轮换。我知道的唯一另一种非常简单的方法是询问覆盖屏幕的 UIView 的宽度和高度(最简单的,你可以让你的 View Controller 的 View 覆盖整个屏幕)。

如果您有一个完美覆盖整个屏幕的 UIView(我们称之为 myView),您可以尝试:

CGFloat width = myView.frame.size.width;
CGFloat height = myView.frame.size.height;

这些应该自行调整方向(根据我的经验,如果您在 viewDidAppear:animated: 中获得 heightwidth ,它肯定会起作用。 code> 或之后的任何内容。此外,UIView 需要是 UIViewController 的 View 属性或该 View 的 subview 。如果不是,则必须实现 didRotateFromInterfaceOrientation: 或找到其他方法来告诉您的 View 有关任何旋转的信息)。一旦我们获得了屏幕的“宽度”和“高度”,我们就可以将您的整数转换为屏幕位置。尝试这样的事情:

(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 到屏幕上各自的点。

关于objective-c - 相对于屏幕区域的 subview 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11603883/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com