将UIButton添加到窗口旋转问题

ahe*_*ang 0 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, 30);
    point = CGPointMake(point.x + offsetLeft, point.y + offsetTop);
    v.center = point;
    timer1 forMode:NSDefaultRunLoopMode];
    [window addSubview:v];
Run Code Online (Sandbox Code Playgroud)

一个问题是当我以横向模式进行时:

UIWindow *window = [[[UIApplication sharedApplication] windows] objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)

我打印:

NSLog(@"WINDOW WIDTH IS %f AND HEIGHT IS %f", window.frame.size.width, window.frame.size.height);
Run Code Online (Sandbox Code Playgroud)

我有:

WINDOW WIDTH IS 768.000000 AND HEIGHT IS 1024.000000
Run Code Online (Sandbox Code Playgroud)

这不是真的..似乎它并不关心方向.

Rob*_*ier 5

你不应该插入视图UIWindow.它UIWindow本身不会旋转.它将变换应用于旋转子视图,该子视图保存根视图.如果可能的话,您应该将视图插入到根视图中.否则,你需要计算自己的变换,这很痛苦.

有关此问题的详细信息,请参阅此问题.简短的回答是,这种事情最好通过使用基于视图的应用程序模板,并利用它rootViewController来获取根视图并插入那里.

请注意,您还应该避免要求第一个窗口UIApplication.这不能保证是"主要"窗口; 第一个窗口是最后面的窗口(并且有多个窗口并不罕见).如果必须使用a UIWindow,请从您关心的视图中获取([view window]),或者将其绑定到UIApplicationDelegateXIB中.