• 02---按钮的设置 控制器拥有导航栏包装一层导航控制器 添加子控制器 UIBarButtonItem导航按钮 设置导航栏UINavigationBar主题 设置状态栏样式


    一、按钮的设置

    1.设置背景图片

    [btn setBackgroundImage:image forState:UIControlStateNormal];

    2.内部UIImageView

    1> 设置内部UIImageView的图片

    [btn setImage:image forState:UIControlStateNormal];
    // 不能写成btn.imageView.image = image;

    2> 调整内部图片的内容模式

    self.imageView.contentMode = UIViewContentModeCenter;

    3> 调整内部ImageView的frame 

    重写 - (CGRect)imageRectForContentRect:(CGRect)contentRect方法

    #pragma mark - 内容区域里显示的图片区域位置
    - (CGRect)imageRectForContentRect:(CGRect)contentRect
    {
        CGFloat x = 10;
        CGFloat y = 0;
        CGFloat width = contentRect.size.width - 2 * x;
        CGFloat height = contentRect.size.height;
        return CGRectMake(x, y, width, height);
    }

    3.内部UILabel

    1> 设置内部UILabel的文字

    [btn setTitle:@"主页" forState:UIControlStateNormal];
    // 不能写成btn.titleLabel.text = @"主页";

    2> 文字居中

    self.titleLabel.textAlignment = NSTextAlignmentCenter;

    3> 文字大小

    self.titleLabel.font = [UIFont systemFontOfSize:12];

    4> 调整内部UILabel的frame

    重写 - (CGRect)titleRectForContentRect:(CGRect)contentRect方法

    #pragma mark - 内容区域里显示的title区域位置
    - (CGRect)titleRectForContentRect:(CGRect)contentRect
    {
        CGFloat x = 10;
        CGFloat y = 0;
        CGFloat width = contentRect.size.width - 2 * x;
        CGFloat height = contentRect.size.height;
        return CGRectMake(x, y, width, height);
    }

    4.覆盖父类在highlighted时的所有操作

    - (void)setHighlighted:(BOOL)highlighted { };

     


    二、让一个控制器拥有导航栏的最快方法:包装一层导航控制器 

     

    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:controller];  // controller 为UIViewController 的一个实例

     


    三、添加子控制器

    - (void)addChildViewController:

    [self addChildViewController:nav];

    会将子控制器添加到childViewControllers,并且子控制器是有顺序的

    * 目的就是持有子控制器,不让子控制器销毁,保证主控制器在,子控制器就在

     


     

    四、UIBarButtonItem导航按钮

    1> 创建一个带有文字的item

    [[UIBarButtonItem alloc] initWithTitle:@"设置" style:UIBarButtonItemStyleBordered target:nil action:nil];

    2> 创建一个包装了自定义View的item

    - (id)initWithCustomView:(UIView *)customView

     

    3> 设置导航按钮UIBarButtonItem主题

     

    // 1.修改所有UIBarButtonItem的外观
    UIBarButtonItem *barItem = [UIBarButtonItem appearance];
    
    // 2.修改item的背景图片
    [barItem setBackgroundImage:image1 forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
    [barItem setBackgroundImage:image2 forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
    
    // 3.修改item上面的文字样式
    NSDictionary *dict = @{
        UITextAttributeTextColor : [UIColor darkGrayColor],
        UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetZero]
    };
    [barItem setTitleTextAttributes:dict forState:UIControlStateNormal];
    [barItem setTitleTextAttributes:dict forState:UIControlStateHighlighted];

     

     


     

    五、设置导航栏UINavigationBar主题

    // 1.appearance方法返回一个导航栏的外观对象 修改了这个外观对象,相当于修改了整个项目中的外观
    UINavigationBar *bar = [UINavigationBar appearance];
    
    // 2.设置导航栏的背景图片
    [bar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
    
    // 3.设置导航栏文字的主题
    [bar setTitleTextAttributes:@{
      UITextAttributeTextColor : [UIColor blackColor],
      UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetZero]
     }];

    六、设置状态栏样式

    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackOpaque;

     

  • 相关阅读:
    解决:导出excel身份证号码显示为科学计数法
    6个出色的基于JQuery的Tab选项卡实例2010/01/29 16:261. jQuery 选项卡界面 / 选项卡结构菜单教程
    dhl:禁用firefox缓存
    artDialog4.0.5
    dhl:解除ASP.NET上传文件大小限制
    dhl:样式在ie不同浏览器下呈现不出来的原因分析
    dhl:artDialog 3.0.4 跨框架下 穿越的问题
    jQuery 1.7 正式版已经可以下载使用。jQuery是一个JavaScript库,它简化了HTML文档遍历,事件处理,动画和为网络快速发展的Ajax交互。jQuery 1.7 版本加入了新的事件API .on() 和 .off(),提
    无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。
    专家视角看IT与架构
  • 原文地址:https://www.cnblogs.com/lszwhb/p/3832931.html
Copyright © 2020-2023  润新知