iOS返璞归真,译文系列——UIScreen

相关文章

UIVIew译文 UIWindow译文

UIScreen译文 UIViewController译文

UIScreen

        一个UIScreen对象定义了一个基于硬件的显示相关的属性。iOS设备有一个主屏幕和零个或多个连接的屏幕。一个TVOS装置具有电视连接到设备的主屏幕。使用UIScreen获取连接到设备的每个显示器的屏幕对象。每个UIScreen定义了,用于显示的边界和其他有趣的属性,如它的亮度。

概要

        在iOS 8之前,屏幕的bounds总是竖屏尺寸。旋转设备为横屏或倒置的方向并没有改bounds。在iOS 8后,屏幕上的bounds属性考虑了屏幕的界面方向考虑。这种行为意味着竖屏的bounds和横屏的bounds不同啦。依赖于屏幕尺寸的应用程序可以在fixeDcoordinateSpace属性做出计算和修改。

处理屏幕连接和断开通知

        当用户连接或断开一个屏幕,在iOS设备上,系统发出相应的通知给你的应用程序。始终使用长寿命对象观察,来自应用程序的的通知,例如app delegate。连接和断开通知可以随时来,即使您的应用程序在后台。如果应用程序在通知到达时是挂起状态,则通知将一直排队,直到应用程序在前台或后台再次运行时,才将其发送给观察者。
        当你收到一个新的外部显示器连接的通知时,只要你可以使用额外的屏幕空间。要使用该空间,创建一个窗口对象,将新屏幕分配给它的屏幕属性,并显示窗口。这样做会导致窗口的内容将显示在显示时,您的应用程序是在前台。如果不为额外的屏幕创建窗口,或者创建窗口而不显示窗口,则在外部显示上显示为黑色。
        UIScreen显示两种处理方法进行连接和断开的通知。连接处理程序创建一个辅助窗口,将其与新连接的屏幕,让一个应用程序的视图控制器(通过自定义视图属性表示)向窗口添加一些内容,并显示它。断线处理释放窗口并通知主视图控制器,这样就可以相应地调整其表现。
- (void)handleScreenConnectNotification:(NSNotification*)aNotification {
    UIScreen*    newScreen = [aNotification object];
    CGRect        screenBounds = newScreen.bounds;
 
    if (!_secondWindow) {
        _secondWindow = [[UIWindow alloc] initWithFrame:screenBounds];
        _secondWindow.screen = newScreen;
 
        // Set the initial UI for the window and show it.
        [self.viewController displaySelectionInSecondaryWindow:_secondWindow];
        [_secondWindow makeKeyAndVisible];
    }
}
 
- (void)handleScreenDisconnectNotification:(NSNotification*)aNotification {
    if (_secondWindow) {
        // Hide and then delete the window.
        _secondWindow.hidden = YES;
        [_secondWindow release];
        _secondWindow = nil;
 
        // Update the main screen based on what is showing here.
        [self.viewController displaySelectionOnMainScreen];
    }
}

配置外部显示的屏幕模式

        许多屏幕支持多个分辨率,其中一些使用不同的像素纵横比。屏幕对象默认使用最常见的屏幕模式,但您可以将该模式更改为更适合您的内容。例如,如果您使用的是OpenGL ES和你的纹理设计为640×480像素的屏幕实现一个游戏,你可以更改默认分辨率较高的屏幕的屏幕模式。

        如果您计划使用非默认的屏幕模式,应用模式给UIScreen对象之前将屏幕和窗口。的UIScreenMode类定义了一个单屏模式的属性。你可以得到一个列表,从availableModes属性屏幕支持模式和遍历一个符合你需要的列表。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值