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 <UIKit/UIKit.h>

2.定义界面属性

复制代码
#pragma mark 主页欢迎词

@property (nonatomic,weak)IBOutlet UILabel *lableHello;

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];

}

运行项目


基础语法

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

  • 定义函数不同
    面向对象式

    obj.method(argument)

消息传递式

复制代码
[obj  method : argument]

将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];

按钮操作

复制代码
//设置title 
[self.loginBtn  setTitle:@"Logout" forState: UIControlStateNormal]; 

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

}

附录:

相关推荐
递归不收敛28 分钟前
Conda 常用命令汇总(新手入门笔记)
笔记·conda
前端橙一陈1 小时前
Salesforce Developer Edition(开发者版) 搭建测试环境
经验分享·笔记·其他
电子小子洋酱1 小时前
BearPi小熊派 鸿蒙入门开发笔记(4)
笔记·华为·harmonyos
摇滚侠2 小时前
Spring Boot 3零基础教程,WEB 开发 通过配置类代码方式修改静态资源配置 笔记32
java·spring boot·笔记
非专业程序员Ping3 小时前
一文读懂字符、字形、字体
ios·swift·font
聪明的笨猪猪4 小时前
Java JVM “内存(1)”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
_dindong4 小时前
Linux网络编程:Socket编程TCP
linux·服务器·网络·笔记·学习·tcp/ip
2501_915921434 小时前
iOS 应用代上架流程,多工具组合与使用 开心上架 跨平台自动化上传指南
android·ios·小程序·uni-app·自动化·cocoa·iphone
日日行不惧千万里4 小时前
2025最新仿默往 IM 即时通讯系统源码(PC + Web + iOS + Android)完整版发布!
android·ios
歪歪1004 小时前
React Native开发Android&IOS流程完整指南
android·开发语言·前端·react native·ios·前端框架