横屏下UIWindow添加多个view自动旋转的解决方案
来源:互联网 发布:android ios js 统一 编辑:程序博客网 时间:2024/05/18 02:07
在横屏应用中,使用keyWindow添加一个视图,切换设备横屏方向,发现添加的视图不会随着变化方向。
并且只有Window的RootViewController可以监听到屏幕旋转变化。
[[UIApplicationsharedApplication].keyWindow addSubview:view];
解决方法如下:
定义RotateWindow继承UIWindow,并重写addSubview方法。AppDelegate中的window使用RotateWindow。
#define degreesToRadian(x) (M_PI * (x) / 180.0)- (void)addSubview:(UIView *)view { if ([self.subviews count] >= 1) { float angle = ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeLeft)?90:-90; view.transform = CGAffineTransformMakeRotation(degreesToRadian(angle)); view.frame = CGRectOffset(self.frame, 0, 0); } [super addSubview:view];}
定义RotateViewController作为window的RootViewController,并重写以下方法
// 仅允许横屏- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations. return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);}// 设备旋转时修改添加视图方向- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { UIWindow *window = [UIApplication sharedApplication].keyWindow; int i = 0; for (UIView *view in window.subviews) { if (i != 0) { CGAffineTransform transform = view.transform; transform = CGAffineTransformRotate(transform, degreesToRadian(180)); view.transform = transform; } i++; }}
0 0
- 横屏下UIWindow添加多个view自动旋转的解决方案
- 横屏下UIWindow添加多个view自动旋转的解决方案
- 添加多个UIWindow时,使用keyWindow要注意一点
- 添加多个UIWindow时,使用keyWindow要注意一点
- 多个uiwindow 的可见性
- IOS view 自动旋转
- 【android】 scrollview添加子view之后,不自动滚动的问题,解决方案
- 多个View添加setOnClickListener
- UIWindow(控制器及view的创建)
- ParentViewController中添加多个SubViewController的View
- 给view添加旋转动画
- [addChildViewController]View Controller中可以添加多个sub view,在需要的时候显示出来;
- iOS 多个view添加手势, 识别是哪个view的事件
- Android GridView 添加多个view
- android 多个view自动换行
- UIViewController 没有跟着UIWindow一起旋转的原因分析
- iOS View的旋转
- 空解决方案添加多个项目
- CreateEvent的用法
- 修改Linux控制台(console)的显示信息。
- getopt()和getopt_long()函数参数分析
- poj 2406 Power Strings(KMP求循环次数)
- 关于Eclipse中启动wildfly超时报错的问题
- 横屏下UIWindow添加多个view自动旋转的解决方案
- Android自定义Dialog
- Java CyclicBarrier
- g++多文件编译,并实现makefile
- URL短地址压缩算法
- HTTP请求和响应格式
- asp.net前台页面读取配置文件
- 给UIImage 设置圆角 阴影
- ioctl与FIONREAD