Iphone 将UIButton添加到窗口旋转问题
我正在做:Iphone 将UIButton添加到窗口旋转问题,iphone,objective-c,ipad,uisplitviewcontroller,Iphone,Objective C,Ipad,Uisplitviewcontroller,我正在做: UIWindow *window = [[[UIApplication sharedApplication] windows] objectAtIndex:0]; CGPoint point = CGPointMake(window.frame.size.width/2, window.frame.size.height/2); point = CGPointMake(window.frame.size.width - v.frame.size.width - 10,
UIWindow *window = [[[UIApplication sharedApplication] windows] objectAtIndex:0];
CGPoint point = CGPointMake(window.frame.size.width/2, window.frame.size.height/2);
point = CGPointMake(window.frame.size.width - v.frame.size.width - 10, 30);
point = CGPointMake(point.x + offsetLeft, point.y + offsetTop);
v.center = point;
timer1 forMode:NSDefaultRunLoopMode];
[window addSubview:v];
一个问题是,当我在横向模式下执行此操作时:
UIWindow *window = [[[UIApplication sharedApplication] windows] objectAtIndex:0];
我打印:
NSLog(@"WINDOW WIDTH IS %f AND HEIGHT IS %f", window.frame.size.width, window.frame.size.height);
我得到:
WINDOW WIDTH IS 768.000000 AND HEIGHT IS 1024.000000
但事实并非如此。。它似乎不关心方向。使用[[UIScreen mainScreen]bounds]获取帧。它将在所有方向上返回适当的帧信息。我面临着类似的问题。我不知道原因。使用[[UIScreen mainScreen]bounds]获取帧。它将在所有方向上返回适当的帧信息。我面临着类似的问题。我不知道原因。您可以找出设备所面对的方向
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
然后您可以对其执行检查:
if (orientation == UIDeviceOrientationPortrait) {
// ...
} else {
// ...
}
您可以找出设备所面对的方向
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
然后您可以对其执行检查:
if (orientation == UIDeviceOrientationPortrait) {
// ...
} else {
// ...
}
不应将视图插入
ui窗口
。ui窗口本身不旋转。它将变换应用于包含根视图的旋转子视图。如果可能的话,应该将视图插入根视图。否则,您将需要计算自己的变换,这是一个难题
有关此问题的更多详细信息,请参阅。简单的回答是,最好使用基于视图的应用程序模板,并使用rootViewController
获取根视图并插入其中
请注意,还应避免询问ui应用程序的第一个窗口。这并不保证是“主”窗口;第一个窗口是最远的后窗口(通常有多个窗口)。如果必须使用UIWindow
,请从您关心的视图([view window]
)获取该窗口,或将其绑定到XIB中的UIApplicationLegate
。不应将视图插入UIWindow
。ui窗口本身不旋转。它将变换应用于包含根视图的旋转子视图。如果可能的话,应该将视图插入根视图。否则,您将需要计算自己的变换,这是一个难题
有关此问题的更多详细信息,请参阅。简单的回答是,最好使用基于视图的应用程序模板,并使用rootViewController
获取根视图并插入其中
请注意,还应避免询问ui应用程序的第一个窗口。这并不保证是“主”窗口;第一个窗口是最远的后窗口(通常有多个窗口)。如果您必须使用UIWindow
,请从您关心的视图([view window]
)获取它,或者将其绑定到XIB中的UIApplicationLegate
。我认为只有窗口的第一个子视图实际接收旋转事件。试试这个
[[[[[UIApplication sharedApplication] keyWindow] subviews] objectAtIndex:0] addSubview:SOME_SUBVIEW];
我认为只有窗口的第一个子视图实际接收旋转事件。试试这个
[[[[[UIApplication sharedApplication] keyWindow] subviews] objectAtIndex:0] addSubview:SOME_SUBVIEW];
@aherlambang你期待什么?它应该从那里旋转90度如果视图是纵向的,那么这是正确的,但是在横向的,它应该从我展示的视图顺时针旋转90度above@aherlambang在你发布的图片中它不是旋转的吗?灰色区域后面的线条是一个UITabelView,想象一下,我想你会明白我的意思mean@aherlambang你期待什么?它应该旋转90度如果视图是纵向的,那么这是正确的,但在景观中,它应该从我展示的视图顺时针旋转90度above@aherlambang在你发布的图片中它不是旋转的吗?灰色区域后面的线条是一个UITabelView,想象一下,我想你会明白我的意思,但是你怎么能给它添加一个子视图呢?在获得正确的框架并进行计算以确定新添加控件或视图的位置后,将其添加到窗口或其他视图中,无论什么适合你的实现。计算框架是可以的,问题是找到我可以添加到的窗口,但如何向其中添加子视图?在获得正确的框架并进行计算以确定新添加控件或视图的位置后,将其添加到窗口或其他视图中适合您的实现的任何内容。计算框架即可,问题是如何找到我可以添加到的窗口