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

}

附录:

相关推荐
MDM.Plus3 小时前
苹果MDM技术演进:从远程控制到设备信任体系的构建
运维·服务器·安全·ios·mdm·手机店
韩曙亮4 小时前
【Flutter】Flutter 进程保活 ③ ( 屏幕常亮设置 | Flutter 禁止息屏、关闭自动锁屏、屏蔽系统屏保 )
android·flutter·ios·屏幕常亮·禁止息屏
百里香酚兰5 小时前
【python学习笔记】pyttsx3库疑似只播报一次语音
笔记·python·学习
2501_915909067 小时前
IPA 深度混淆是什么意思?从混淆强度到实际效果的解读
android·ios·小程序·https·uni-app·iphone·webview
chnyi6_ya8 小时前
论文阅读笔记:VideoWeaver — 面向智能体长视频生成的技能评估与进化
论文阅读·笔记·音视频
J_yyy8 小时前
基于Reactor的文件管理服务开发笔记
c++·笔记·reactor·多线程编程·muduo
浩瀚地学8 小时前
【Java基础复习】IO流(四)
java·开发语言·经验分享·笔记·学习
疯狂打码的少年8 小时前
【操作系统】板块总结 + 下期预告(软件工程)
笔记·软件工程
咸甜适中9 小时前
rust语言学习笔记——Tokio库(异步编程)
笔记·学习·rust·tokio
YUS云生9 小时前
Python学习笔记·第29天:Git进阶——分支操作与合并冲突
笔记·python·学习