Ios 处于纵向模式时的横向框架

Ios 处于纵向模式时的横向框架,ios,orientation,cgrect,Ios,Orientation,Cgrect,当设备/界面处于纵向模式时,是否可以在横向模式下检索UIView的帧?如果是这样,这是如何做到的?MrThys,您应该知道您的视图应该是怎样的,无论是纵向模式还是横向模式。之后,可以将它们定义为如下常量: #define myViewPortrait CGRectMake(0.0f, 0.0f, 768.0f,1024.0f) #define myViewLandscape CGRectMake(0.0f, 0.0f, 1024.0f,768.0f) 然后,您可以在设备更改方向时使用这些值。:

当设备/界面处于纵向模式时,是否可以在横向模式下检索UIView的帧?如果是这样,这是如何做到的?

MrThys,您应该知道您的视图应该是怎样的,无论是纵向模式还是横向模式。之后,可以将它们定义为如下常量:

#define myViewPortrait CGRectMake(0.0f, 0.0f, 768.0f,1024.0f)
#define myViewLandscape CGRectMake(0.0f, 0.0f, 1024.0f,768.0f)

然后,您可以在设备更改方向时使用这些值。:)

不太可能。你知道屏幕的尺寸只是交换宽度和高度。但如果状态栏可见,可用区域将不同(例如,iPhone上的纵向为320x460,横向为300x480),如果您使用的是UINavigationController或类似设备,则必须考虑其chrome,然后,如果您的视图不是容器视图控制器中视图控制器的顶级视图,则必须考虑各种自动调整大小的遮罩和任何自定义布局代码


你为什么需要这个?通常,您应该只响应UIViewController的
willRotateToInterfaceOrientation:duration:
或UIView的
布局子视图中给出的大小,我不知道有什么可靠的方法可以做到这一点。在我的一个项目中,我使用了
UIApplicationWillChangeStatusBarOrientationNotification
。查询视图的
frame
bounds
属性会返回不一致的结果,具体取决于视图是否被另一个视图覆盖(也可能存在其他中断情况)。可能
willrotateTointerfaceoorientation:
方法内部的情况有所不同

在我的例子中,我最终实现了自己的方法来找出视图边界:

- (CGSize)currentViewSizeWithOrientation:(UIInterfaceOrientation)orient
{
  CGSize size = self.currentView.bounds.size;
  CGSize result;

  if (UIInterfaceOrientationIsPortrait(orient))
    result = CGSizeMake(fminf(size.width, size.height),
                        fmaxf(size.width, size.height));
  else
    result = CGSizeMake(fmaxf(size.width, size.height),
                        fminf(size.width, size.height));
  return result;
}

在您的情况下,您可以尝试在从Nib加载图幅后找到它。然后,可以推断出横向框架是什么,或者在界面生成器中显式设置框架,并在两个方向的代码中复制它。

请您详细解释一下您的问题……我不知道如何更详细我想他想知道旋转后视图的行为,例如,当它设置了自动调整大小的面具等。嗯,在这种情况下我不知道。这只是一个猜测,OP到目前为止没有发表评论,但对于50分的悬赏,我不确定它是否会那么简单。@Nick我不太明白OP想要什么,尽管你说的有道理。哈哈,这个方法应该可以工作,我确实可以用所需的框架定义常量。但是,因为我不想每次调整XIB时都修改contants,我想知道是否有一种动态方法来检索纵向和横向中的帧值。我需要这种方法,因为我想在用户查看之前使用正确的帧初始化视图landscape@MrThys:用户旋转时,您不能仅执行此操作这个装置?几乎你唯一的选择就是尝试一下,看看帧是什么,然后硬编码。