旋转实现iOS(iPhone/iPad) 屏幕旋转响应函数的缺点与窗口大小位置调整,以及解决办法

1,UIViewController响应幕屏旋转的点缺:

(1)旋转之前响应的操纵点缺:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration;

在这里头理处窗口控件巨细置位整调,最大的题问就是不能通过 self.view.frame 取获局布区域。因为这时取获到的是旋转前的,而不是旋转后的

(2)旋转以后响应的操纵点缺:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation;

在这里理处窗口控件巨细置位整调,最大的题问就是不道知目标转向,就是旋转后是底到横屏还是竖屏

(3)上述两者合结的点缺:

有人可能会急不可待地说加增一个成员变量在willRotateToInterfaceOrientation住记目标转向toInterfaceOrientation,然后在didRotateFromInterfaceOrientation实现整调。

UIViewController多了,个每加增那么一个成员变量不觉得累坠吗?

2,解决方法

(1)在旋转之前的willRotateToInterfaceOrientation里头实现整调,但是目标局布区域不是通过self.view.frame来取获,而是通过本人自定义函数getClientRect来实现。

举例:

//Howard 2013-05-07 旋转之前的操纵(细心看了,不需要用到 didRotateFromInterfaceOrientation )
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{

//先判断否是有效转向
    if( UIDeviceOrientationIsValidInterfaceOrientation( toInterfaceOrientation ) )
    {

       //参数示表否是横屏,这里我只要要道知幕屏方向就能够提早道知目标区域了!
        [self setCtrlPos: UIInterfaceOrientationIsLandscape( toInterfaceOrientation) ];

 

    }
}


//这个用来实现窗口空间巨细置位整调

-(void)setCtrlPos:(BOOL)isHorz

{

    每日一道理
在个每人心中,都曾停留过那些值得怀念的人,也许还在,也许早已消逝,在茫茫人海中丢失,于是,那份怀念便得凄凉,因为模糊的记忆中只剩下一个“空壳”,没有什么,甚至连自己的心都装不下,时间把一切抹平,也把当日的泪水封锁,因为已经没有,怀念只是悲凉!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwgpss.html