您的位置:首页 > 移动开发 > IOS开发

iOS实战开发常见问题(一)

2016-11-24 10:41 183 查看

storyboard文件的认识

用来描述软件界面
默认情况下,程序一启动就会加载Main.storyboard
加载storyboard时,会首先创建和显示箭头所指的控制器界面

IBAction和IBOutlet

IBAction:
本质就是void
能让方法具备连线的功能

IBOutlet
能让属性具备连线的功能

storyboard连线容易出现的问题

连接的方法代码被删掉,但是连线没有去掉
可能会出现方法找不到错误
unrecognized selector sent to instance

连接的属性代码被删掉,但是连线没有去掉
setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key

UIViewController(控制器)的认识

一个控制器负责管理一个大界面
控制器负责界面的创建、事件处理等

类扩展

格式

@interface 类名()
/** 属性、方法的声明 */
@end


作用
为某个类增加额外的属性和方法声明
可以写在.h和.m文件中

项目属性



Product Name
软件名称、产品名称、项目名称

Organization Name
公司名称、组织名称

Organization Identifier
公司的唯一标识
一般是公司域名的反写,比如com.520it

Bundle Identifier
软件的唯一标识
一般是Organization Identifier + Product Name

添加项目到文件的正确选则



九宫格计算思路

利用控件的索引index计算出控件所在的行号和列号
利用列号计算控件的x值
利用行号计算控件的y值



//商品的宽高
CGFloat shopW = 90;
CGFloat shopH = 110;
//一行要展示的列数
int cols = 3;

//每一列之间的间距
CGFloat colMargin = (self.shopsView.frame.size.width - cols * shopW) / (cols - 1);
//每一行之间的间距
CGFloat rowMargin = 50;

//创建一个父控件
ShopView * shopView = [ShopView shopView];
//商品的索引
NSInteger index = self.shopsView.subviews.count;
// 给商品控件传递商品模型
shopView.shop = self.shops[index];
//商品的x值
NSUInteger col = index % cols;
CGFloat shopX = col * (colMargin + shopW);

//商品的y值
NSUInteger row = index / cols;
CGFloat shopY = row * (rowMargin + shopH);

shopView.frame = CGRectMake(shopX, shopY, shopW, shopH);


HUD

其他说法:指示器、遮盖、蒙板
半透明HUD的做法
背景色设置为半透明颜色

定时任务

方法1:performSelector

// 1.5s后自动调用self的hideHUD方法
[self performSelector:@selector(hideHUD) withObject:nil afterDelay:1.5];


方法2:GCD

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// 1.5s后自动执行这个block里面的代码
self.hud.alpha = 0.0;
});


方法3:NSTimer

// 1.5s后自动调用self的hideHUD方法
[NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(hideHUD) userInfo:nil repeats:NO];
// repeats如果为YES,意味着每隔1.5s都会调用一次self的hidHUD方法


常见问题

项目里面的某个.m文件无法使用
检查:Build Phases -> Compile Sources

项目里面的某个资源文件(比如plist、音频等)无法使用
检查:Build Phases -> Copy Bundle Resources

模型

什么是模型?
专门用来存放数据的对象
一般都是一些直接继承自NSObject的纯对象
内部会提供一些属性来存放数据

一个控件看不见有哪些可能?

宽度或者高度其实为0
位置不对(比如是个负数或者超大的数,已经超出屏幕)
hidden == YES
alpha <= 0.01
没有设置背景色、没有设置内容
可能是文字颜色和背景色一样
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息