• iOS开发-UI (六)Navigation


    知识点:

    1.UINavigationController

    2.UINavigationItem

    3.UINavigationBar

    4.UINavigationController视图切换

    ========================

    UINavigationController

        1.什么是导航控制器

    作用:管理视图控制器

        2.UINavigationController对象创建

          1)初始化方式

    - (id)initWithRootViewController:(UIViewController *)rootViewController

          2)UINavigationController组成:

    (1)navigationBar(高度44)

    (2)customContent  — 有自定义的ViewController提供

    (3)navigationToolbar(高度44)

        3.通过UINavigationController对象切换视图

          1)将视图控制器压入导航控制器的栈容器中

    - (void)pushViewController:(UIViewController *)viewController 

      animated:(BOOL)animated

          2)将视图控制器从导航控制器中弹出

    - (UIViewController *)popViewControllerAnimated:(BOOL)animated

      

    ========================

    UINavigationItem

    UINavigationItem包含了:

    (1)backBarButtonItem(由上一级ctl的属性决定)

    (2)title/titleView(当前ctl)

    (3)rightBarButtonItem(当前ctl)

    (4)leftBarButtonItem(当前ctl)

        1.UINavigationItem和UIViewController关系

    navigationItem是UIViewController的一个属性

    这个属性是为UINavigationController服务的

        2.创建UIBarButtonItem

      1)创建系统自带的UIBarButtonSystemItem

          - (id)initWithBarButtonSystemItem:(UIBarButtonSystemItem)systemItem 

          target:(id)target 

      action:(SEL)action;

    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:self action:@selector(btnAction)];

          2)文字UIBarButtonItem的创建方式

    - (id)initWithTitle:(NSString *)title

          style:(UIBarButtonItemStyle)style

        target:(id)target

        action:(SEL)action

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem new];

          3)图片UIBarButtonItem的创建方式

    - (id)initWithImage:(UIImage *)image 

          style:(UIBarButtonItemStyle)style

        target:(id)target

        action:(SEL)action

    self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"refresh_30"] style:UIBarButtonItemStylePlain target:nil action:nil];

          3)如何将UIBarButtonItem加入到导航的左边和右边

    @property (nonatomic, retain) UIBarButtonItem *leftBarButtonItem

    @property (nonatomic, retain) UIBarButtonItem *rightBarButtonItem

    @property (nonatomic, retain) UIBarButtonItem *backBarButtonItem

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:b];

        3.定制UIBarButtonItem

        4.定制导航中间的titleView

    self.navigationItem.title = @"控制器2";

        5.定制backBarButtonItem

          注意:设置当前控制器的backBarButtonItem需要在下一个控制器中才能显示

    ========================

    UINavigationBar

        1.如何往UINavigationBar贴图

          设置背景图片

          - (void)setBackgroundImage:(UIImage *)backgroundImage

        forBarMetrics:(UIBarMetrics)barMetrics

    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"1.png"] forBarMetrics:UIBarMetricsDefault];

        2.如何设置UINavigationBar设置颜色

          @property (nonatomic, retain) UIColor *tintColor

          @property (nonatomic, retain) UIColor *barTintColor

        3.如何设置透明颜色

          1)设置UINavigationBar的样式

          @property (nonatomic, assign) UIBarStyle barStyle

       self.navigationController.navigationBar.barStyle= UIBarStyleBlack;

          2)是否透明

    @property (nonatomic, assign, getter=isTranslucent) BOOL translucent

    //获取管理当前视图控制器的导航控制器(如果这个视图控制器没有受到导航控制器管理,此方法会返回空指针)

        //设置导航栏为不透明,坐标点会自动下移64个单位

        self.navigationController.navigationBar.translucent = NO;

          3)改变导航栏的颜色

    @property(nonatomic,retain) UIColor *barTintColor 

    //设置背景色

        self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:1.0];

        4.如何隐藏UINavigationBar

          1)不带动画隐藏

          @property (nonatomic, getter=isNavigationBarHidden) BOOL  navigationBarHidden

    //显示

        self.navigationController.navigationBarHidden = NO;

          2)带动画隐藏

    - (void) setNavigationBarHidden:(BOOL)navigationBarHidden 

          animated:(BOOL)animated

          [self.navigationController setNavigationBarHidden:YES animated:YES];

    ========================

    UINavigationController视图切换

        1.获取导航控制器中的视图数组

    @property (nonatomic, copy) NSArray *viewControllers

        2.将视图控制器压入导航控制器的栈容器中

    - (void)pushViewController:(UIViewController *)viewController 

      animated:(BOOL)animated

    //视图控制器入栈

        [self.navigationController pushViewController:ctlA animated:YES];

        3.将视图控制器从导航控制器中弹出

    - (UIViewController *)popViewControllerAnimated:(BOOL)animated

        4.切换至指定的视图控制器(该控制器必须在当前导航控制器中的栈中)

    - (NSArray *)popToViewController:(UIViewController *)viewController

                                    animated:(BOOL)animated

        5.回到根视图控制器

         - (NSArray *)popToRootViewControllerAnimated:(BOOL)animated

  • 相关阅读:
    关于document.onkeydown
    kubernetes PV存储卷类型 Marathon
    0015leetcode算法实现之三数之和3sumpython&golang实现 Marathon
    0018leetcode算法实现之四数之和4sumpython&golang实现 Marathon
    ubuntu20.04调整时区时间同步 Marathon
    0054leetcode算法实现之螺旋矩阵spiralMatrixpython&golang实现 Marathon
    0005剑指offer替换空格python&golang实现 Marathon
    使用 kubectl 管理 Secret Marathon
    0058leetcode算法实现之左翻转字符串reverseLeftStringpython%golang实现 Marathon
    0059leetcode算法实现之螺旋矩阵IIspiralMatrixIIpython&golang实现 Marathon
  • 原文地址:https://www.cnblogs.com/fcug/p/6308951.html
Copyright © 2020-2023  润新知