iOS开发知识体系
<一> app如何跳转到评论页面
- 获取url :只需要换成你自己的appID ,就可以实现跳转到自己的AppStore所在位置
NSString *str = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=自己的AppId "];
- 打开url
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
- 附一张 ASCII 表,方便日后查看
<二>UIViewController 在导航下位置问题
- 只需要加一句话,就可以正常显示
self.edgesForExtendedLayout = UIRectEdgeNone;
<三> 对于iOS 8及以下的问题
- 使用FDSTackView 存在问题
在iOS 8模拟器运行程序,隐藏其中某一个view时,FDStackView 会Crash, 抛出错误:我们可以改用OAStackView - 使用tableView时,在iOS 8及以下设备使用以下代码隐藏cell分割线:
tableView.separatorStyle = UITableViewCellSeparatorStyleNone
若在此操作前设置tableView footerView、headerView之类,则会导致Crash, 只需要更改设置顺序即可。
<四>使用UItextView 主动调起键盘的问题
- 不定义直接调起,需要使用GCD来延时加载,这样键盘可以
[self.view becomeFirstResponder];
- @dynamic与@synthesize区别
在声明property属性后,有2种实现选择
@synthesize
编译器期间,让编译器自动生成getter/setter方法。
当有自定义的存或取方法时,自定义会屏蔽自动生成该方法
@dynamic
告诉编译器,不自动生成getter/setter方法,避免编译期间产生警告
然后由自己实现存取方法
或存取方法在运行时动态创建绑定:主要使用在CoreData的实现NSManagedObject子类时使用,由Core Data框架在程序运行的时动态生成子类属性
<五>对于设置导航来说,下面两个记得不要使用出错:
- 对于创建自定义的导航错误的使用方式:
UINavigationBar *bar = [UINavigationBar new];
UINavigationBar *bar = [[UINavigationBar alloc] init];
正确打开方式
UINavigationBar *bar = [UINavigationBar appearance];
- 对于使用rightBarButtonItem
正确的使用方式:
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:'your customView'];
<六>Build Phases设置
- Copy Bundle Resources 是指生成的product的.app内将包含哪些资源文件
- Compile Sources 是指将有哪些源代码被编译
- Link Binary With Libraries 是指编译过程中会引用哪些库文件
通过Copy Bundle Resources中内容的不同设置, 我们可以让不同的product包含不同的资源, 包括程序的主图标等, 而不是把XCode的工程中列出的资源一股脑的包含进去.而这还不是一个target所指定的全部内容. 每个target可以使用一个独立, 不同的Info.plist文件.我们都知道, 这个Info.plist文件内定义了一个iPhone项目的很多关键性内容, 比如程序名称, 最终生成product的全局唯一id等等.而且不同的target还可以定义完整的差异化的编译设置, 从简单的调整优化选项, 到增加条件编译所使用的编译条件, 以至于所使用的base SDK都可以差异化指定.
<七> UILabel 设置AttributeString 设置行尾省略...
- 首先我们创建一个label
UILabel *label = [[UILabel alloc] init];
若想让让label.text 超出宽度部分显示 ... 我们只需设置
label.lineBreakMode = NSLineBreakByTruncatingTail;
对于label.attributedText 同样的设置是不会达到相同的效果,笔者总结设置attributedText行尾部显示省略号方法:
NSMutableAttributedString *attributeText = [[NSMutableAttributedString alloc]initWithData:[subjects.content dataUsingEncoding:NSUnicodeStringEncoding] options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType} documentAttributes:nil error:nil];
NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];
NSDictionary *attributes = @{NSFontAttributeName:[UIFont systemFontOfSize:15.0f],NSParagraphStyleAttributeName:paragraph};
[attributeText addAttributes:attributes range:NSMakeRange(0, attributeText.length)];
label.attributedText = attributeText;
label.lineBreakMode = NSLineBreakByTruncatingTail;
这样就可以了
<八>设置一个view变化时,显示平稳过度
- 可以使用UIView+Animation
[UIView beginAnimations:nil context:nil];
//your code
[UIView commitAnimations];
<九>Mac中常用的快捷键
Command +/- 放大或缩小字体
Control+推出键 显示关机对话框
Command+Tab 任意情况下切换应用程序 – 向前循环
Shift+Command+Tab 切换应用程序 – 向后循环
Command+C/V/X 复制/粘贴/剪切
Command+N 新建应用程序窗口
Command+Q 退出当前应用程序,说明一下,所有应用程序界面左上角都有红黄绿三个小图标,点击绿色扩展到最适合的窗口大小,黄色最小化,红色关掉当前窗口,但并没有退出程序。
Command+Delete 把选中的资源移到废纸篓
Shift+Command+Delete 清倒相关程序的废纸篓
Command+` 同一应用程序多窗口间切换
Command+F 呼出大部分应用程序的查询功能
用Command+Q配合Command+Tab关闭应用程序最为迅速
Command+L 当前程序是浏览器时,可以直接定位到地址栏
Control+Space 呼出Spotlight
Command+Space 切换输入法
Command+Control+Space 呼出mac自带各种符号
<十> 转载巧哥的文章
- 使用 block 的另一个用处是可以让程序在后台较长久的运行。在以前,当 app 被按 home 键退出后,app 仅有最多 5 秒钟的时候做一些保存或清理资源的工作。但是应用可以调用 UIApplication 的beginBackgroundTaskWithExpirationHandler方法,让 app 最多有 10 分钟的时间在后台长久运行。这个时间可以用来做清理本地缓存,发送统计数据等工作。
让程序在后台长久运行的示例代码如下:
// AppDelegate.h 文件
@property (assign, nonatomic) UIBackgroundTaskIdentifier backgroundUpdateTask;
// AppDelegate.m 文件
-(void)applicationDidEnterBackground:(UIApplication *)application
{
[self beingBackgroundUpdateTask];
// 在这里加上你需要长久运行的代码
[self endBackgroundUpdateTask];
}
-(void)beingBackgroundUpdateTask
{
self.backgroundUpdateTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[self endBackgroundUpdateTask];
}];
}
-(void)endBackgroundUpdateTask
{
[[UIApplication sharedApplication] endBackgroundTask: self.backgroundUpdateTask];
self.backgroundUpdateTask = UIBackgroundTaskInvalid;
}
- app 开启、进入前台、进入后台调用顺序:
初次启动程序,只会掉用
-(void) applicationDidBecomeActive:(UIApplication *)application;
进入后台,再进入前台,依次调用
-(void)applicationWillResignActive:(UIApplication *)application;
-(void)applicationDidEnterBackground:(UIApplication *)application;
-(void)applicationWillEnterForeground:(UIApplication *)application;
-(void)applicationDidBecomeActive:(UIApplication *)application;
<十> Xcode 快捷键:
如果能慢慢熟悉一些快捷键,对于提高工作效率是有很大帮助的。虽然设置页面有所有的快键键列表,但是估计没人能全部记住并且用上,我个人总结出来常用的快键键如下:
cmd + 1 切换成 Project Navigator (cmd + 2~7 也可以做相应切换,不过不常用)
cmd + ctrl + 上 在 .h 和 .m 文件之间切换
cmd + enter 切换成 standard editor
cmd + opt + enter 切换成 assistant editor
cmd + shift + y 切换 Console View 的显示或隐藏
cmd + 0 隐藏左边的导航 (Navigator) 区
cmd + opt + 0 隐藏右边的工具 (Utility) 区
ctrl + 6 列出当前文件中所有的方法,可以输入关键词来过滤。这个相当赞,可以快速定位到想编辑的方法。
我直接把这个快键盘改成了 ctrl+o,这样按起来更顺手。
cmd + ctrl + 左 / 右 到上 / 下一次编辑的位置,在 2 个编辑位置跳转的时候很方便。
cmd + opt + j 跳转到文件过滤区
cmd + shift + f 在工程中查找
cmd + r 运行,如果选上直接 kill 掉上次进程的话,每次直接一按就可以重新运行了
cmd + b 编译工程
cmd + shift + k 清空编译好的文件
cmd + . 结束本次调试
ESC 调出代码补全
cmd + 单击 查看该方法的实现
opt + 单击 查看该方法的文档
cmd + t 新建一个 tab 栏
cmd + shift + [ 在 tab 栏之间切换