iOS 开发随笔(不定时更新)

iOS开发知识体系

iOS 开发随笔(不定时更新)_第1张图片
iOS开发知识体系.png

<一> 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 栏之间切换

你可能感兴趣的:(iOS 开发随笔(不定时更新))