设置 UIScreen 值后保持 UIWindow 大小

Posted

技术标签:

【中文标题】设置 UIScreen 值后保持 UIWindow 大小【英文标题】:Keep UIWindow size after setting it's UIScreen value 【发布时间】:2013-04-05 00:42:12 【问题描述】:

我正在使用 AirPlay,iPad 的主要内容被传送到 AppleTV 上。

当我想要 iPad 上的信息与 AppleTV 上的不同时,我遇到了分辨率问题。

我实例化了 UIWindow:

_atvWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, 2048, 1536)];

NSLog表示窗口是我想要的帧大小

我将 UIWindow 设置为 iPad 屏幕

_atvWindow.screen = [[UIScreen screens] objectAtIndex:0];

NSLog 表示窗口框架现在是 1024x768

这是一个视网膜 iPad。我希望尺寸保持视网膜并相应地设置图像。一旦我添加了视网膜质量的图像,它们(如你所料)就太大了。任何想法是什么导致了这个或我在这里缺少什么?

【问题讨论】:

【参考方案1】:

您是否尝试从您的 [通知对象] 对象中的屏幕读取帧大小?

- (void)handleConnectedScreen:(UIScreen *)screen withViewController:(UIViewController *)controller 
    if(!_airPlayWindow)
    
        CGRect frame = screen.bounds;
        _airPlayWindow = [[UIWindow alloc] initWithFrame:frame];
        _airPlayWindow.backgroundColor = [UIColor clearColor];
        [_airPlayWindow setScreen:screen];
        _airPlayWindow.hidden = NO;
    

    UIViewController *oldController = _airPlayWindow.rootViewController;
    [_airPlayWindow setRootViewController:controller];
    [oldController removeFromParentViewController];



- (void)screenDidConnect:(NSNotification *)notification 
    ABOutputViewController *c = [[ABOutputViewController alloc] init];
    [self handleConnectedScreen:[notification object] withViewController:c];



[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(screenDidConnect:) name:UIScreenDidConnectNotification object:nil];

【讨论】:

以上是关于设置 UIScreen 值后保持 UIWindow 大小的主要内容,如果未能解决你的问题,请参考以下文章

UIWindow ,UIlable

为通用视图修改 UIWindow

设置值后 pyQt 进度对话框保持为空

你真的了解UIWindow吗?

UIWindow 子类:Touches 事件不会被触发

在不同的 UIWindow 上呈现视图控制器