关于创建Window窗口以及MakeKeyAndViseble 和MakeKeyWindow,lkeywindow
window窗口是用户第一直观感觉的到的界面也是我们需要进行的后期搭建的基础,
有时需要开启多个窗口的数据问题,就涉及到创建多个窗口,
keywindow是什么?我们窗口window创建后,保存在我们的可以windows数组中,会按顺序保存在数组中。我们需要看见我们的窗口就需要进行对窗口的密钥 *** 作和显示 *** 作,那么就需要调用MakeKeyAndViseble ,最近调用后的就会将当前窗口设置成keywindow,相当于当前现实的主窗口(注意是“最近”调用的)
比如我们需要实现一个悬浮的在页面上最顶层的控件不受页面切换影响
我们不想改变上面的keywindow作为主窗口,且需要开启另外的OthereWindow,我们可以让Otherwindow悬浮在上层,那么我们怎么办,我们可以对OtherWindow调用makeKeyWindow,先设置密钥 *** 作,然后对OtherWindow.Hidden=NO那么窗口OtherWindow将可以显示且不会设置成keywindow。那么我以依旧可以进行window *** 作
window是iOS中视图的根,所有视图都是基于window才能展示。而如果项目中滥用window,不能合理的释放会造成页面卡死。当然如果能控制window的生命周期,合理使用能实现许多复杂的功能实现起来变的简单易用。
window是视图展示的根,它是View的子类。例如:主视图显示的KeyWindow和键盘的keyboard的window。默认window创建完成后是Hidden属性是YES。
根视图管理视图的显示和隐藏,使window和Controller关联起来。
window的显示层级,越高显示等级越高。
一个程序只有一个keyWindow。例如键盘的显示只能由keyWindow发起,其他window调用键盘无效。
在需要关闭页面的地方调用销毁方法。
如果需要做简单的动画,可以把广告Controller由Window.rootViewControllerd出。注意:需要在广告Controller销毁是也需要销毁Window。
当自定义一个UIWindow,并在window添加控件,横屏时,window并没有跟随视图旋转。
解决方法1:(苹果推荐这样使用)
1.定义一个UIViewController,并设置为当前Window的rootViewController,将控件添加到自定义的UIViewController上,调用时使用self.mineWindow.mineRootViewController.button...
2.在自定义的UIViewController中添加横屏方法:
- (BOOL)shouldAutorotate {
returnYES
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationLandscapeRight
}
解决方法2:
对UIWindow进行旋转(UIWindow继承自UIView):
UIInterfaceOrientation orientation = [[UIApplication sharedApplication]statusBarOrientation]
if (orientation == UIInterfaceOrientationLandscapeLeft) {
CGAffineTransform rotation = CGAffineTransformMakeRotation(3*M_PI/2)
[self setTransform:rotation]
}
if (orientation == UIInterfaceOrientationLandscapeRight) {
CGAffineTransform rotation = CGAffineTransformMakeRotation(M_PI/2)
[self setTransform:rotation]
}
如有不当之处请@我。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)