纯代码搭建界面及相关注意点
来源:互联网 发布:我的世界java路径 编辑:程序博客网 时间:2024/06/18 13:23
纯代码搭建UI界面主要步骤:
1、系统初始化时视图控制器已经创建了根视图,即self.view
2、创建需要添加到UI界面上的控件
3、设置控件的背景颜色、文字及字体颜色、控件样式等等各种属性
4、设置控件的frame
5、将控件添加到根视图(self.view addSubView)
例如:纯代码搭建小飞机游戏中:
1)首先加载背景图
//设置背景图- (void)setupBackground{ //1、添加UIImageView,加载背景图片 UIImageView *imgViewBg = [[UIImageView alloc]init]; //设置UIImageView的frame imgViewBg.frame = self.view.frame; //设置背景图片 UIImage *imgBg = [UIImage imageNamed:@"background"]; imgViewBg.image = imgBg; //添加到视图 [self.view addSubview:imgViewBg];}
2)设置飞机按钮
首先在类拓展中添加属性
@property (nonatomic,weak) UIButton *btnPlane;
再次设置飞机按钮
//设置小飞机- (void) setupPlane{ //2、添加UIButton,加载飞机图片 UIButton *btnPlane = [UIButton buttonWithType:UIButtonTypeCustom]; //设置按钮图片 UIImage *imgPlaneNormal = [UIImage imageNamed:@"hero1"]; UIImage *imgPlaneHighlighted = [UIImage imageNamed:@"hero2"]; [btnPlane setImage:imgPlaneNormal forState:UIControlStateNormal]; [btnPlane setImage:imgPlaneHighlighted forState:UIControlStateHighlighted]; //设置frame [btnPlane sizeToFit]; btnPlane.center = self.view.center; //添加视图 [self.view addSubview:btnPlane]; //赋值 _btnPlane = btnPlane;}
3)创建控制飞机移动的四个按钮
//创建按钮方法- (UIButton*) createDirctionButton:(NSString*)strDirction{ //创建一个button UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; //为button设置两种状态的图片 UIImage *imgNormal = [UIImage imageNamed:[NSString stringWithFormat:@"%@_normal",strDirction]]; UIImage *imgHighlighted = [UIImage imageNamed:[NSString stringWithFormat:@"%@_highlighted",strDirction]]; [button setImage:imgNormal forState:UIControlStateNormal]; [button setImage:imgHighlighted forState:UIControlStateHighlighted]; //添加到视图 [self.view addSubview:button]; //返回按钮 return button;}
- (void)setupDirctionButton{ //创建四个方向按钮 UIButton *topButton = [self createDirctionButton:@"top"]; UIButton *bottomButton = [self createDirctionButton:@"bottom"]; UIButton *leftButton = [self createDirctionButton:@"left"]; UIButton *rightButton = [self createDirctionButton:@"right"]; //设置方向按钮的frame CGFloat width = 45; CGFloat height = 45; CGFloat x = self.view.center.x - width * 0.5; CGFloat y = self.view.center.y + 200; CGRect rect = CGRectMake(x, y, width, height); topButton.frame = CGRectOffset(rect, 0, -50); bottomButton.frame = CGRectOffset(rect, 0, 50); leftButton.frame = CGRectOffset(rect, -50, 0); rightButton.frame = CGRectOffset(rect, 50, 0); topButton.tag = HMDirctionTop; leftButton.tag = HMDirctionLeft; rightButton.tag = HMDirctionRight; bottomButton.tag = HMDirctionBottom; //为按钮添加监听事件 [topButton addTarget:self action:@selector(btnClickMovePlane:) forControlEvents:UIControlEventTouchUpInside]; [bottomButton addTarget:self action:@selector(btnClickMovePlane:) forControlEvents:UIControlEventTouchUpInside]; [leftButton addTarget:self action:@selector(btnClickMovePlane:) forControlEvents:UIControlEventTouchUpInside]; [rightButton addTarget:self action:@selector(btnClickMovePlane:) forControlEvents:UIControlEventTouchUpInside];}
4)创建按钮监听方法
- (void) btnClickMovePlane:(UIButton*)sender{ //因为不能直接对结构体赋值,因此要先取出飞机中心点 CGPoint center = self.btnPlane.center; CGFloat distance = 10; switch (sender.tag) { case HMDirctionTop: center.y -= distance; break; case HMDirctionLeft: center.x -= distance; break; case HMDirctionRight: center.x += distance; break; case HMDirctionBottom: center.y += distance; break; default: break; } self.btnPlane.center = center;}
5)在viewDidLoad中添加相关方法
- (void)viewDidLoad { [super viewDidLoad]; //搭建界面 [self setupBackground]; [self setupPlane]; [self setupDirctionButton];}
注意点:
1)OC语言中枚举类型的定义
typedef NS_ENUM(NSInteger, HMDirction){ HMDirctionTop = 100, HMDirctionLeft = 101, HMDirctionRight = 102, HMDirctionBottom = 103};
2)iOS的应用程序启动顺序是:
main.m → info.plist → 找到Launch screen interface file base name → 找到LaunchSrceen.storyboard → 在info.plist中找到Main storyboard file base name → 找到Main.storyboard → 找到带箭头的viewController(视图控制器) → 显示视图控制器中管理的视图(根视图)
3)IBOutlet 与 IBAction作用:
两个的作用都是“连线”,IBOutlet 标注一个属性是否可以连线,IBAction标注的storyboard中的控件是否可以连线
4)数字转换为字符串的方式
数字转换成字符串才能为控件赋值,所以:
方法一:[NSString stringWithFormat:”%zd”,num];
方法二:@(num).description, 先“装箱”,把数字装箱成对象,然后调用对象的description方法
%zd能适应编译器不同的环境。在32位系统下,%zd == %d,在64位系统下,%zd == %ld。
5)UIButton是一个复合控件,里面内置一个UIImageView和一个UILabel。
6)对象的结构体属性
对象的结构体属性不能直接修改,而是要先取出结构体属性,然后修改,再赋值回去。例如:
// 错误的代码!!! // self.btnPlane.frame.origin.y -= 10; /** * 错误原因:要修改一个对象的结构体属性里面的一个变量时,不能直接修改,而要先取出整个结构体,然后修改,然后在把修改后的结构体赋值回对象 */ // 正确的代码!!! // 1. 先取出结构体属性 CGRect frm = self.btnPlane.frame; // 2. 修改结构体中的变量 frm.origin.y -= 10; // 3. 设置对象的结构体属性 self.btnPlane.frame = frm;
7)每一个控件有一个tag属性,可以辨别是哪一个控件。bag属性默认值为0,可以通过属性检查器修改,也可以用对象,tag修改。
8)一个方法可以监听多个控件的事件,多个方法也可以监听一个控件。(多对多关系)
一个属性不能引用多个控件,但是多个属性可以引用一个控件。(实际开发中,一个控件引用一个属性)
9)父视图与子视图是空间上的位置关系,不是继承关系。
10)视图控制器 的作用:
视图控制器创建个管理“根视图”,以及释放“根视图”;
视图控制器监听根视图中其他控件的事件。
- 纯代码搭建界面及相关注意点
- BearSkill纯代码搭建iOS界面
- 毕业设计----minicom注意点及相关问题
- 写一个纯JAVA代码需要注意的几点
- 纯代码添加masonry约束注意点记录一
- LAMP环境的搭建及注意点
- 界面测试注意点
- shell相关注意点
- jquery相关注意点
- Recycleview相关注意点
- react及webpack相关注意点,小工具
- 『MySQL学习』MySQL学习及相关注意点
- NDK环境搭建及单步调试注意点
- IOS 纯代码实现界面
- QQ聊天界面注意点
- 进程通信消息队列代码及一些注意点
- 日常代码注意点
- 代码编写注意点
- design pattern——interpreter
- Lambda表达式
- nginx在linux上从安装到使用
- 1115. Counting Nodes in a BST (30)-PAT甲级真题(二叉树的遍历,dfs)
- HDU 1520 Anniversary party (简单树形DP入门)
- 纯代码搭建界面及相关注意点
- 搬砖的猿猴,你还能活多久!
- qduoj 分辣条1 (搜索+剪枝)
- Android获取View的宽度和高度
- 将spring framework源码导入Spring Tool Suite中
- TEZ的安装以及测试
- OC_KVO(Key-Value Observe)
- 一直显示在屏幕正中间位置
- javascript之获取对象几种方式比较