什么是UI?
UI即User Interface(用户界面)的简称。UI设计是指对软件的人机交互、操作逻辑、界面美观的整体设计。好的UI设计不仅是让软件变得有个性有品位,还要让软件的操作变得舒适简单、自由,充分体现软件的定位和特点
1. 第一个iOS程序-基本认识
1). UI界面-对应开发步骤和技术点分析
2). UI界面的组成
>UI界面上每一个元素都是对象
>万物皆对象
3). 认识UIKit框架
>UIKit框架: UILabel、UIButton、UIImageView都属于UIKit框架
就像之前学习的NSArray/NSDictionary属于Foundation框架一样
4):其他常用框架 地图(MapKit框架) 音频视频(AVFoundation框架) 动画(CoreGraphic框架) 定位(CoreLocation)
2. 新建项目.
UIViewController的使用.
作用:负责处理软件界面的各种事件,并负责软件界面的创建和销毁注意:每一个控制器都会专门管理一个软件界面概念:凡是继承自UIViewController的对象,都叫做控制器
3. 认识storyboard.
1. 作用: 描述软件界面的
2. 程序启动的简单过程:
当项目启动会加载一个Main.storyboard,但是加载哪一个storyboard不确定
选择项目—>General —> Deployment info中的 Main interface 选择哪一个storyboard
然后加载storyboard控制器,需要初始化这个控制器才能运行.需要is Initial View Controller 初始化这个控制器.然后会显示小箭头指向这个控制器
4. storyboard中搭建界面和监听点击
1.IBOutLet
>使用格式---@property(nonatomic, weak)IBOutlet UILabel *label
>被IBOutlet修饰的属性---能拖线到storyboard中
>只能修饰属性
2. IBAction
>使用格式----(IBAction)buttonClick{}
>被IBAction修饰的方法---能拖线到storyboard中
>返回值类型实际是void
>只能修饰方法返回值类型
5. 开发中常见的两种错误
> 错误1
原因:属性代码被删掉了,但是属性连线还在
解决:删除多余的连线
>错误2
原因:调用了一个不存在的方法
解决:认真检查方法名,使用正确且存在的方法名
5. UIView
1. 什么是UIView?
>UIView可以称之为控件/视图 >屏幕上所有能看到的东西都是UIView >按钮(UIButton)、文本(UILabel)都是控件
所有控件的父类都是UIView
2. 父控件、子控件
01-每个控件都是个容器,能容纳其他控件 02-内部小控件是大控件的子控件 03-大控件是内部小控件的父控件 04-每一个控制器(UIViewController)内部都有个默认的UIView属性
3. UIView 常见属性
@property(nonatomic,readonly) UIView *superview; 获得自己的父控件对象@property(nonatomic,readonly,copy) NSArray *subviews; 获得自己的所有子控件对象@property(nonatomic) NSInteger tag; 控件的ID(标识),父控件可以通过tag来找到对应的子控件@property(nonatomic) CGAffineTransform transform; 控件的形变属性(可以设置旋转角度、比例缩放、平移等属性)
常见方法:
- (void)addSubview:(UIView *)view; 添加一个子控件view- (void)removeFromSuperview; 从父控件中移除- (UIView *)viewWithTag:(NSInteger)tag; 根据一个tag标识找出对应的控件(一般都是子控件)
位置和尺寸:
@property(nonatomic) CGRect frame; 控件矩形框在父控件中的位置和尺寸(以父控件的左上角为坐标原点)@property(nonatomic) CGRect bounds; 控件矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x、y一般为0)@property(nonatomic) CGPoint center; 控件中点的位置(以父控件的左上角为坐标原点)
UIViewController中有一个UIView的属性,所以UIViewController可以使用self.view来调用UIView的对象,因为控件都是继承UIView的,所以UIButton,UILabel,等控件也可以在UIViewController中使用self.label.来调用,前提是必须在UIViewController的类扩展中先声明UILabel属性