控制屏幕旋转
/*
屏幕旋转
屏幕横屏时 横屏布局
屏幕竖屏时 竖屏布局
1. 允许屏幕旋转
2. 要指定屏幕旋转的方向
3. 找到旋转触发的方法
4. 判断屏幕方向 更改布局
5. 测试一下
*/
// 允许屏幕旋转
- (BOOL)shouldAutorotate
{
return YES;
}
// 指定屏幕的旋转方向
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAll;
}
// 旋转时触发的方法
-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
NSLog(@"%@",NSStringFromCGSize(size));
}
屏幕旋转时重新布局子视图
屏幕旋转时 需要子视图frame进行一些改变 以适应屏幕的变化 这个方法是UIView的方法 子类LoginView 可以对其进行重写
// frame发生变化的时候 会触发 layoutSubviews 方法
- (void)layoutSubviews
{
[super layoutSubviews];
// frame发生变化 相当于横屏了
// 这时 咱们需要重新布局视图
// 因为不知道父类这个方法 做了啥
// 所以需要在重写的时候先调用一下父类的方法
// 然后再写自己的东西
// 判断竖屏还是横屏
// 1. 把应用程序取出来
// 2. 判断一下当前应用程序 屏幕的朝向
// 取出应用程序 单例方法的命名规范share什么
UIApplication *app = [UIApplication sharedApplication];
// 判断方向
if (app.statusBarOrientation == UIInterfaceOrientationPortrait || app.statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown) {
NSLog(@"竖着");
self.passWordLTView.frame = CGRectMake(self.userNameLTView.frame.origin.x, self.userNameLTView.frame.origin.y + self.userNameLTView.frame.size.height + kRowHeight, self.userNameLTView.frame.size.width, self.userNameLTView.frame.size.height);
}else{
NSLog(@"横着");
self.passWordLTView.frame = CGRectMake(self.userNameLTView.frame.origin.x + self.userNameLTView.frame.size.width + 10, self.userNameLTView.frame.origin.y, self.userNameLTView.frame.size.width, self.userNameLTView.frame.size.height);
}
}
内存警告
// 已经接到内存警告触发的方法
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
NSLog(@"内存警告了");
// 内存警告了 要干点什么
// 释放已经显示过的 并且 不是当前显示的视图
// 如果这个视图 正在被显示 那么 这个视图的window属性不是空的
if ([self isViewLoaded] == YES && self.view.window == nil) {
// 把当前视图 释放
self.view = nil;
}
}