iOS开发基础-UI学习
Posted Billy Miracle
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS开发基础-UI学习相关的知识,希望对你有一定的参考价值。
UIView
UIView表示屏幕上的一块矩形区域,它在App中占有绝对重要的地位,因为ios中几乎所有可视化控件都是UIView的子类。负责渲染区域的内容,并且响应该区域内发生的触摸事件。
UIView的功能
- 管理矩形区域里的内容。
- 处理矩形区域中的事件。
- 子视图的管理。
- 能实现动画,UIView的子类也具有这些功能。
通过addSubview:这个方法添加子类,不管谁添加它,只要越晚添加,视图就在越上层。
移除父视图也会把它得子视图移除。
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
//创建一个UIView对象
//UIView是iOS中的视图对象
//显示在屏幕上的所有的对象的基础类
//所有显示在屏幕上的对象一定都继承于UIView
//屏幕上能看到的对象都是UIView的子类
//UIView是一个矩形对象,有背景颜色,可以显示,有层级关系
UIView* view = [[UIView alloc] init];
//设置UIView位置
//x向右,y向下
view.frame = CGRectMake(100, 100, 100, 200);
view.backgroundColor = [UIColor blueColor];
//将新建的视图添加到父亲视图上
//1.将新建视图显示到屏幕上
//2.将视图作为父亲视图的子视图管理起来
[self.view addSubview: view];
//是否隐藏视图对象
//YES:不显示
//NO:显示,默认为NO
view.hidden = NO;
//设置透明度
//aplha等于1,不透明,等于0,透明,0.5,半透明
//view.alpha = 0.5;
self.view.backgroundColor = [UIColor orangeColor];
//设置是否显示不透明
//YES:不透明,NO:透明
//默认为YES
//它决定不了当前UIView是否透明
//作用是:给绘图系统提供一个性能优化开关
//如果该值为YES,那么绘图在绘制该视图时把整个视图当作不透明对待
view.opaque = NO;
//将自己从父亲视图删除掉
//1:从父亲视图的管理中删除
//2:不会显示在屏幕上
//[view removeFromSuperview];
}
@end
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
//创建三个视图对象
UIView* view01 = [[UIView alloc] init];
view01.frame = CGRectMake(100, 100, 150, 150);
view01.backgroundColor = [UIColor blueColor];
UIView* view02 = [[UIView alloc] init];
view02.frame = CGRectMake(125, 125, 150, 150);
view02.backgroundColor = [UIColor orangeColor];
UIView* view03 = [[UIView alloc] init];
view03.frame = CGRectMake(150, 150, 150, 150);
view03.backgroundColor = [UIColor greenColor];
//将三个视图对象显示到屏幕上
//并且添加到父亲视图上
//哪一个视图被先添先添加到视图中,就先绘制哪一个视图
//按添加顺序绘制
[self.view addSubview: view01];
[self.view addSubview: view02];
[self.view addSubview: view03];
//将某一个视图调整到最前面
//参数:UIView对象,调整哪一个视图到最前方
[self.view bringSubviewToFront:view01];
//将某一个视图调整到最后方
[self.view sendSubviewToBack: view03];
//subViews:管理所有self.view的子视图的数组
//可以通过它直接找到子视图
UIView* viewFront = self.view.subviews[2];
UIView* viewBack = self.view.subviews[0];
if (viewBack == view03) {
NSLog(@"相等");
}
[view01 removeFromSuperview];
}
@end
UIWindow
UIWindow是UIview的子类,所以UIWindow就是一个View,就是增加许多系统的能力,只不过使用的时候,一般把它当容器用。UIWindow有个属性是rootViewController来跟UIViewController相连,然后以他为附着体,来进行真正的显示。
- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
//创建一个UIWindow对象
//整个程序中只有一个UIWindow对象
//在程序基本上表示屏幕窗口
//UIWindow继承于UIView
//UIWindow是一个特殊的UIView
//UIScreen:表示屏幕硬件表示类
//mainScreen获得主屏幕设备信息
//bounds表示屏幕的宽高值
//self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
//创建一个视图控制器做为UIWindow的跟视图控制器
self.window.rootViewController = [[UIViewController alloc] init];
//设置背景颜色
self.window.backgroundColor = [UIColor blueColor];
UIView* view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 150, 150)];
view.backgroundColor = [UIColor orangeColor];
//背景视图
UIView* backView = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 240, 360)];
backView.backgroundColor = [UIColor greenColor];
//将backView做为view的父亲视图
//子视图的坐标是参照父亲视图的坐标系移动
//父视图坐标移动,所有的子视图都会移动
[backView addSubview: view];
[self.window addSubview: view];
//每一个view都有一个window属性
//view.window;
//backView.window;
//使window有效并显示到屏幕上
[self.window makeKeyAndVisible];
NSLog(@"%@",view.window);
NSLog(@"%@",backView.window);
NSLog(@"%@",self.window);
//self.window.rootViewController.window
//它们是一个window
}
UIButton
UIButton的事件状态:
UIControlEventTouchDown, //单点触摸按下事件:用户点触屏幕,或者又有新手指落下的时候
UIControlEventTouchDownRepeat, //多点触摸按下事件,点触计数大于1:用户按下第二、三、或第四根手指的时候
UIControlEventTouchDragInside, //当一次触摸在控件窗口内拖动时
UIControlEventTouchDragOutside, //当一次触摸在控件窗口之外拖动时
UIControlEventTouchDragEnter, //当一次触摸从控件窗口之外拖动到内部时
UIControlEventTouchDragExit, //当一次触摸从控件窗口内部拖动到外部时
UIControlEventTouchUpInside, //所有在控件之内触摸抬起事件
UIControlEventTouchUpOutside, //所有在控件之外触摸抬起事件
UIControlEventTouchCancel, //所有触摸取消事件
UIControlEventValueChanged, //当控件的值发生改变时,发送通知。用于滑块、分段控件、以及其他取值的控件。
UIControlEventEditingDidBegin, // 当文本控件中开始编辑时发送通知
UIControlEventEditingChanged, // 当文本控件中的文本被改变时发送通知
UIControlEventEditingDidEnd, // 当文本控件中编辑结束时发送通知
UIControlEventEditingDidEndOnExit, // 当文本控件内通过按下回车键(或等价行为)结束编辑时,发送通知
UIControlEventAllTouchEvents, // 通知所有触摸事件
UIControlEventAllEditingEvents, // 通知所有关于文本编辑的事件
UIControlEventApplicationReserved, // range available for application use
UIControlEventSystemReserved, // range reserved for internal framework use
UIControlEventAllEvents, // 通知所有事件
UIButton的状态:
- normal(普通状态)
- 默认情况(Default)
- 对应的枚举常量:UIControlStateNormal
- 除开UIControlStateHighlighted、UIControlStateDisabled、UIControlStateSelected以外的其他情况,都是normal状态
- 这种状态下的按钮可以接收点击事件 如果前后连着设置按钮同时处于多种状态, 则表现出来的也是 normal 状态, 如果设置为enabled = NO; 则会进入UIControlStateDisabled状态(包括颜色), 不能点击。
- highlighted(高亮状态)
- 对应的枚举常量:UIControlStateHighlighted
- 【当按住按钮不松开】或者【highlighted = YES】时就能达到这种状态
- 这种状态下的按钮【可以】接收点击事件
- selected (选中状态)
- 对应的枚举常量: UIControlStateSelected
- 【button.selected = YES】时就能达到这种状态
- 这种状态下的按钮【可以】接收点击事件
- disabled(失效状态,不可用状态)
- 如果enabled属性为NO,就是处于disable状态,代表按钮不可以被点击
- 对应的枚举常量:UIControlStateDisabled
- 【button.enabled = NO】时就能达到这种状态
- 这种状态下的按钮【无法】接收点击事件
- 让按钮无法点击的2种方法
- button.enabled = NO;
- 【会】进入UIControlStateDisabled状态
button.userInteractionEnabled = NO; - 【不会】进入UIControlStateDisabled状态,继续保持当前状态
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
//创建普通按钮函数
-(void) creatUIRectButton {
//创建一个btn对象
//圆角类型btn:UIButtonTypeRoundedRect
//一定通过类方法来创建buttonWithType:类名+方法名
UIButton* btn = [UIButton buttonWithType: UIButtonTypeRoundedRect];
//设置button按钮的位置
btn.frame = CGRectMake(100, 100, 100, 40);
//设置按钮的文字内容
//@parameter
//P1:字符串类型,显示到按钮上的文字
//P2:设置文字显示的状态类型:UIControlStateNormal 正常状态
[btn setTitle:@"按钮01" forState: UIControlStateNormal];
//P1:显示文字
//P2:显示文字状态:UIControlStateHighlighted 按下状态
[btn setTitle:@"按钮按下" forState: UIControlStateHighlighted];
//灰色背景颜色
btn.backgroundColor = [UIColor grayColor];
//设置文字显示的颜色
//P1:颜色
//P2:状态
//[btn setTitleColor:[UIColor redColor] forState: UIControlStateNormal];
//设置按下状态的颜色
[btn setTitleColor:[UIColor orangeColor] forState: UIControlStateHighlighted];
//设置按钮风格颜色,不分状态,优先级没有setTitleColor高
[btn setTintColor:[UIColor whiteColor]];
//titleLable实际是UILable空间
btn.titleLabel.font = [UIFont systemFontOfSize: 18];
//添加到视图中并显示
[self.view addSubview: btn];
}
//创建一个可以显示图片的按钮
-(void) creatImageBtn {
//创建一个自定义类型的btn
UIButton* btnImage = [UIButton buttonWithType:UIButtonTypeCustom];
btnImage.frame = CGRectMake(100, 200, 100, 100);
//两张图片加载
UIImage* icon01 = [UIImage imageNamed:@"btn01.png"];
UIImage* icon02 = [UIImage imageNamed:@"btn02.png"];
//设置按钮图片方法设置
//P1:显示的图片对象
//P2:控件的状态
[btnImage setImage:icon01 forState:UIControlStateNormal];
[btnImage setImage:icon02 forState:UIControlStateHighlighted];
[self.view addSubview: btnImage];
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
[self creatUIRectButton];
[self creatImageBtn];
}
@end
以上是关于iOS开发基础-UI学习的主要内容,如果未能解决你的问题,请参考以下文章