• ios学习记录 day43 UI19 标签视图 和 block用法


    Tab bar  +  Custom content  =  Tab bar controller

    viewControllers 显示的视图控制器  tabBar 标签栏  delegate 代理

    图片  1.大小限制 30*30  @2x的60*60

            2.ios7以前 图片需要镂空

    tabBar是UITabBarController对象包含多个tabBarItem   每一个tabBarItem对应一个viewController   tabBar的高度是49     当tabBarItem超过5个 系统自动增加一个more按钮

    一键设定所有导航视图控制器的颜色(QQ的一键换肤) 可以通过UIAppearance协议操作(这套协议系统已经帮助实现了,直接调用就行),可以对一些控件自定义颜色

    Block:

    是一种传值方式 可以替代协议

    ^声明block变量  内容包含在{} 以;结尾

    定义 = 实现;

    例如:

    int mul = 7;

    int(^myBlock)(int)=^(int num){return num * mul;};

    返回类型(^Block变量名)(参数类型)=^(参数类型 参数名){return 实现;};

    block所创建的变量分为两个内存区存储,分别是全局区和栈区,因此在IOS中如果使用block的成员变量或属性要将其copy到对内存中

    //无返回值类型 无参数
    -(void)testFirstBlock
    {
        void(^myBlock)()=^(){
            NSLog(@"first test");
        };

        NSLog(@"zifuchuan");
        myBlock();
    }

    打印结果:(执行的先后顺序)

    zifuchuan
    first test

    //无返回类型 有参数类型

    -(void)testSecondBlock:(int)num Str:(NSString *)str
    {
        void(^myBlock)(int,NSString *) =^(int number,NSString *string){
            NSLog(@"num == %d,str == %@",number,string);
        };
        myBlock(num,str);
    }

    //有返回类型 有参数类型
    -(void)testThiBlock
    {
        int(^myBlock)(NSString *,NSInteger) = ^(NSString *str,NSInteger num){
            int strValue = [str intValue];
            return strValue+num;
        };
        int a = myBlock(@"12",8);
        NSLog(@"a == %d",a);
    }

    //高级块语法

    MainViewController.h

    #import <UIKit/UIKit.h>
    //定义一个Block类型 ^后面首字母大写
    typedef void(^Block)(UIColor *);


    @interface FirstViewController : UIViewController
    //定义属性 用copy!!! 没有*
    @property (nonatomic,copy) Block testBlock;

    @end
    MainViewController.m

    -(void)dealloc
    {
        //如果是成员变量就要先Block_copy
        Block_release(_testBlock);
        [super dealloc];
    }

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        self.navigationController.navigationBar.translucent = NO;


        [self testColorBlock];
        self.testBlock([UIColor redColor]);
    }

    -(void)testColorBlock
    {
        void (^myBlock)(UIColor *) = ^(UIColor *color){
            [self.view setBackgroundColor:color];
        };
        self.testBlock = myBlock;
    }

    1.网络请求最后的返回用块语法

    2.基于TabBarController 将通讯录 相册(NSTimer 1秒滚动) 多彩涂鸦 手势捏合(UIImageview)

  • 相关阅读:
    javascript定时器,取消定时器,及js定时器优化方法
    Systen,IO
    批量地理位置解析
    数据库分区分表(sql、mysql)
    数据库还原的多种方式
    js前端文件收集(一)
    NPOI解决由于excel删除数据导致空行读取问题
    echarts2.0tooltip边框限制导致tooltip显示不全解决办法
    数据库备份通用脚本
    echarts 用marlkline画线 同时配置中含有datazoom,怎么设置markline
  • 原文地址:https://www.cnblogs.com/lxllanou/p/3707350.html
Copyright © 2020-2023  润新知