iOS基础篇(坐标系统、 屏幕旋转、跳转)---iOS笔记摘录
2018-07-30 本文已影响9人
平安喜乐698
目录
1. 坐标系统
2. 屏幕旋转
3. 跳转
1. 坐标系统
frame :位置和大小(相对父控件)
bounds :位置和大小(相对本控件)
center :中心点(相对父控件)
CGFloat
在UIView的坐标系统中,使用CGFloat类型的数据而不是Double或者Float
let x=CGFloat(12.0) :将Double或者Float转换成CGFloat
CGPoint
var point=CGPoint(x:30.0,y:50.0)
CGSize
var size=CGSize(width:20.0,height:10.0)
CGRect
var rect=CGRect(origin:point,size:size)
var rect=CGRect(x:10.0,y:10.0,width:20.0,height:5.0)
使用:
minX minY midX midY maxX maxY rect1.intersects(rect2) 是否 相交
rect1.intersect(rect2) 返回相交部分
rect1.contains(rect2) 是否 包含
CGRectZero
CGRectIntersectsRect(rect1, rect2) // 是否有交集
CGRectIntersection(rect1, rect2) // 返回交集rect
CGRectEqualToRect(rect1, rect2) // 是否相同
CGRectContainsRect(rect1, rect2) // 是否包含
CGRectContainsPoint(rect, CGPointMake(0, 0)) // 是否包含某点
CGRectUnion(rect1, rect2) // 返回合集rect
CGRectFromString(NSStringFromCGRect(frame)) // frame<——>str
CGRectGetMidX() CGRectGetMinX() CGRectGetMaxX() CGRectGetMidY() CGRectGetMinX() CGRectGetMaxY() CGRectGetWidth()
2. 屏幕旋转
代码旋转
[[UIDevice currentDevice]setValue:[NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight] forKey:@"orientation"];
1.项目 | General | Deployment Info 下选择项目支持的方向
Portrait 正常方向 (Home键在下)
Landscape Left (Home键在左)
Landscape Right (Home键在右)
Upside Down (Home键在上)
勾选后整个项目都支持了旋转
App支持的旋转方向
2.VC
// IOS6前
// VC是否支持旋转屏幕(不支持则旋转屏幕时界面不动)
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{
return toInterfaceOrientation==UIInterfaceOrientationPortrait;
}
// IOS6后
// 是否允许旋转
-(BOOL)shouldAutorotate{
return true;
}
// 那些方向允许旋转
- (UIInterfaceOrientationMask)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskPortrait;
}
// 最初-返回最优先使用的方向
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
return UIInterfaceOrientationPortrait;
}
一般放在封装的UINavigationController中
某页面旋转,那它的上级页面也必须支持旋转
仅某个页面旋转
1.自定义UITabbarController中+
-(UIInterfaceOrientationMask)supportedInterfaceOrientations{
return self.selectedViewController.supportedInterfaceOrientations;
}
-(BOOL)shouldAutorotate{
return self.selectedViewController.shouldAutorotate;
}
2.自定义基类VC中+
-(UIInterfaceOrientationMask)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskPortrait;
}
-(BOOL)shouldAutorotate{
return false;
}
3.需要旋转的VC中+
-(BOOL)shouldAutorotate{
return true;
}
有Nav的话(一般都有)
-(BOOL)shouldAutorotate{
return self.topViewController.shouldAutorotate; // self.viewControllers.lastObject
}
-(UIInterfaceOrientationMask)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskPortrait;
}
3. 跳到下一页(代码2种方式:)
push(从右侧弹出)
前提:在push栈中,[[UINavigationController alloc]initWithRootViewController:[UIViewController new]];
跳到下一页
// push 跳到下一页
[self.navigationController pushViewController:[UIViewController new] animated:true];
返回(3方式)
// pop 返回上一页
[self.navigationController popViewControllerAnimated:true];
// 返回到根页面
[self.navigationController popToRootViewControllerAnimated:true];
// 返回到指定页(页面必须在堆栈中)
[self.navigationController popToViewController:self.navigationController.viewControllers[0] animated:true];
present(从下方弹出)
// 跳到下一页
[self presentViewController:[UIViewController new] animated:true completion:^{
}];
// 返回上一页
[self dismissViewControllerAnimated:true completion:^{
}];
present---弹出气泡视图
// 1.:UIViewController
YTGrabOrderPopViewController *grabPopC=[YTGrabOrderPopViewController new];
// 设置pop视图显示大小
[grabPopC setPreferredContentSize:CGSizeMake(142, 160)];
// 设置presentVC的弹出方式为pop
[grabPopC setModalPresentationStyle:UIModalPresentationPopover];
// 2.
UIPopoverPresentationController *popVC=[grabPopC popoverPresentationController];
[popVC setDelegate:self]; // <UIPopoverPresentationControllerDelegate>
// 方式一:对于View
[popVC setSourceView:button]; //
[popVC setSourceRect:button.bounds]; // 位置:可调整
// 方式二:对于UIBarButtonItem
[popVC setBarButtonItem:[UIBarButtonItem new]];
// 3.弹出
[self presentViewController:grabPopC animated:true completion:^{
}];