ios 屏幕旋转响应函数的缺点与窗口大小位置调整,以及解决办法

ios 屏幕旋转响应函数的缺点与窗口大小位置调整,以及解决办法

ID:16198910

大小:31.50 KB

页数:3页

时间:2018-08-08

ios 屏幕旋转响应函数的缺点与窗口大小位置调整,以及解决办法_第1页
ios 屏幕旋转响应函数的缺点与窗口大小位置调整,以及解决办法_第2页
ios 屏幕旋转响应函数的缺点与窗口大小位置调整,以及解决办法_第3页
资源描述:

《ios 屏幕旋转响应函数的缺点与窗口大小位置调整,以及解决办法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、iOS(iPhone/iPad) 屏幕旋转响应函数的缺点与窗口大小位置调整,以及解决办法Howard2013-05-171,UIViewController响应屏幕旋转的缺点:(1)旋转之前响应的操作缺点:-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientationduration:(NSTimeInterval)duration;在这里面处理窗口控件大小位置调整,最大的问题就是不能通过self.view.frame 获取布局区域。因为这时获取到的是旋转前的,

2、而不是旋转后的。(2)旋转之后响应的操作缺点:-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation;在这里处理窗口控件大小位置调整,最大的问题就是不知道目标转向,就是旋转后到底是横屏还是竖屏。(3)上述两者结合的缺点:有人可能会迫不及待地说增加一个成员变量在willRotateToInterfaceOrientation记住目标转向toInterfaceOrientation,然后在didRotateFromInterfaceOrientatio

3、n实现调整。UIViewController多了,每个增加那么一个成员变量不觉得累赘吗?2,解决方法(1)在旋转之前的willRotateToInterfaceOrientation里面实现调整,但是目标布局区域不是通过self.view.frame来获取,而是通过本人自定义函数getClientRect来实现。举例://Howard2013-05-07旋转之前的操作(仔细看了,不需要用到 didRotateFromInterfaceOrientation )-(void)willRotateToInterfaceOrientation:(UIInterfaceOrie

4、ntation)toInterfaceOrientationduration:(NSTimeInterval)duration{//先判断是否有效转向   if(UIDeviceOrientationIsValidInterfaceOrientation(toInterfaceOrientation))   {       //参数表示是否横屏,这里我只需要知道屏幕方向就可以提前知道目标区域了!      [selfsetCtrlPos:UIInterfaceOrientationIsLandscape(toInterfaceOrientation)];   }}//这

5、个用来实现窗口空间大小位置调整-(void)setCtrlPos:(BOOL)isHorz{   CGRectrcClient=getClientRect(isHorz);           //其他控件根据这个rcClient来调整位置大小}//下面这个函数的好处在于,获取到的布局区域不会随着某某UIViewController的self.view.frame来改变,只与屏幕转向有关,与UIViewController无关。//可以根据横屏还是竖屏,提前预知目标窗口区域大小//不要看多了这么一整个函数,但是给多个UIViewController调用就很方便了。//这

6、一个函数,本人丢到自定义的公共文件去实现。当做全局函数,一般用global.h来声明接口,在global.m实现。CGRectgetClientRect(BOOLisHorz){   BOOLisStatusBarHidden=[[UIApplicationsharedApplication]isStatusBarHidden]; //判断屏幕顶部有没状态栏出现   CGRectrcScreen=[[UIScreenmainScreen]bounds];//这个不会随着屏幕旋转而改变   intstatus_height=isStatusBarHidden?0:20; 

7、  CGRectrcClient=rcScreen;   if(isHorz)   {      rcClient.size.width-=status_height;   }   else    {      rcClient.size.height-=status_height;   }   CGRectrcArea=rcClient;   if(isHorz)   {      rcArea.size.width=MAX(rcClient.size.width,rcClient.size.height);      rcArea.s

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。