美文网首页iOS开发之笔记摘录
iOS基础篇(坐标系统、 屏幕旋转、跳转)---iOS笔记摘录

iOS基础篇(坐标系统、 屏幕旋转、跳转)---iOS笔记摘录

作者: 平安喜乐698 | 来源:发表于2018-07-30 10:43 被阅读9次
目录

    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:^{
    }];

相关文章

网友评论

    本文标题:iOS基础篇(坐标系统、 屏幕旋转、跳转)---iOS笔记摘录

    本文链接:https://www.haomeiwen.com/subject/ulixvftx.html