• IOS课程笔记[1-3] 第一个IOS应用


    安装开发环境

    安装Xcode软件

    历史版本查找 https://developer.apple.com/download/all/?q=debug

    创建Object-C项目

    启动过程

    • 步骤
      1.加载Main中定义的storyBoard
      2.加载Main控制器
      3.加载控制器下的View组件显示

    获取控件的两种方式

    定义属性连线:@property (weak, nonatomic) IBOutlet UIView *topView;

    标签获取:ViewWithTag效率低

    第一个APP

    1. 定义头文件
    
    import 
    
    
    • 1
    • 2
    • 3

    2.定义界面属性

    
    #pragma mark 主页欢迎词
    
    @property (nonatomic,weak)IBOutlet UILabel *lableHello;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.定义函数

    
    #pragma mark 开始按钮点击界面
    
    - (IBAction)LoginClickEvent{
    
        NSLog(@"%s",__func__);
    
        printf(__func__);
    
        self.lableHello.textColor = UIColor.redColor;
    
        self.lableHello.text = @"Hello Ciara";
    
        self.lableHello.font = [UIFont systemFontOfSize:20.f];
    
        self.lableHello.backgroundColor=[UIColor yellowColor];
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    运行项目


    基础语法

    Objective-C最大的特色是承自Smalltalk的消息传递模型(message passing)

    • 定义函数不同
      面向对象式
    obj.method(argument)
    
    • 1

    消息传递式

    [obj  method : argument]
    
    • 1

    将method转递给obj,运行时处理,如果传递nil 不做处理

    创建字符串

    NSString* myString = @"My String\n";
    NSString* anotherString = [NSString stringWithFormat:@"%d %s", 1, @"String"];
    NSString* fromCString = [NSString stringWithCString:"A C string"
    encoding:NSASCIIStringEncoding];
    
    • 1
    • 2
    • 3
    • 4

    按钮操作

    //设置title 
    [self.loginBtn  setTitle:@"Logout" forState: UIControlStateNormal]; 
    
    
    • 1
    • 2
    • 3

    view操作

    ViewController生命周期

    • loadView:
      每次访问controller的view(比如controller.view、self.view)且view为nil,loadView方法就会被调用。用于创建Controller的View,使用super调用父方法
    • viewDidLoad:
      1.系统调用 加载完成后调用View

    2.空间初始化、数据初始化、懒加载

    3.在视图加载后被调用,如果是在代码中创建的视图加载器,他将会在loadView方法后被调用,如果是从nib视图页面输出,他将会在视图设置好后后被调用。只会被调用一次,之后进入这个ViewController不调用此函数

    • viewWillAppear:
      视图将要显示

    • viewWillLayoutSubviews:
      控制器的view将要布局子控件(在这个方法里,部署需要改变重新刷新view的代码,功能类似view的layoutSubViews()这个方法,需要注意的是,这个方法里一般都需要重置的view的frame,宽度和高度的获取,因此view的frame一般都写在这个方法里)

    • viewDidLayoutSubviews:
      控制器的view布局子控件完成

    • viewDidAppear:
      视图已经显示,父空间window显示

    • viewWillDisappear:
      视图将要消失

    • viewDidDisappear:
      视图已经消失,在Controller被切换时调用,第二个视图出现后第一个视图消失

    • didReceiveMemoryWarning:
      1.系统调用,内存警告时调用

    2.去除不必要的内存、耗时内存

    基本属性

    左上角为原点
    fream: 父控件中的位置与尺寸
    bounds:控间本身的位置和尺寸 中心点不变 四周延伸
    center: 控件点的位置 中心点的位置

    动态添加控件

    - (void)viewDidLoad {
        [super viewDidLoad];
    
        self.username=@"";
    
        //添加文本
    
        UILabel *lb=[[UILabel alloc] init];
    
        [lb setText:@"更换主题"];
    
        [lb setFrame:CGRectMake(5, 0, 400, 40)];
    
        [self.topView addSubview:lb];
    
        
    
        //添加开关
    
        UISwitch *sw =[[UISwitch alloc] init];
    
        [sw setFrame:CGRectMake(200, 0, 200, 40)];
    
        [self.topView addSubview:sw];
    
        //添加多选框
    
        UISegmentedControl *sc =[[UISegmentedControl alloc] initWithItems:@[@"yellow",@"red",@"Green"]] ;
    
        [sc setFrame:CGRectMake(5, 55, 300, 40)];
    
        [self.topView addSubview: sc];
    
        //设置控件位置
    
        [self.topView  setCenter:CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2) ];
    
    }
    
    - (void) viewDidAppear:(BOOL)animated{
    
        [super viewDidAppear:animated];
    
        //操作 当前页面的父控件只能在此方法获取到父控件UIwindow
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    附录:

    • 教学视频:
      https://www.bilibili.com/video/BV1MF411h7SG/?p=4&spm_id_from=pageDriver&vd_source=38863a419514cab0ef6abb1aa88f9a79
  • 相关阅读:
    湖南(品牌调研)源点咨询 企业品牌调研侧重点分析
    设计模式之外观模式
    Oracle RAC 删除CRS集群配置失败
    Spire.Office for .NET 8.10.2 同步更新-Crk
    Python连接MySQL、PostgreSQL数据库
    开启CentOS/Debian自带的TCP BBR加速
    国外LEAD收款渠道介绍:Wise收款教程
    C++学习day--22 宏和结构体
    透视maven打包编译正常,intellj idea编译失败问题的本质
    AI绘画普及课【二】图生图
  • 原文地址:https://blog.csdn.net/iong_l/article/details/133872107