• 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)

  • 相关阅读:
    cf Round #766(Div. 2)
    网易评论盖楼效果前台实现。。。
    Golang 基础之基础语法梳理 (三)
    Golang 基础之基础语法梳理 (一)
    Golang 基础之基础语法梳理 (二)
    adonisJS mysql
    angular form表单
    adonisJS 入门(路由/控制器/模型/视图)
    angular 父子组件传值及通讯
    adonisJS 视图/查询/列表/单条
  • 原文地址:https://www.cnblogs.com/lxllanou/p/3707350.html
Copyright © 2020-2023  润新知