美文网首页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