文档章节

IOS开发中的小问题整理,持续更新(小问题,大麻烦)

汐蓝-空
 汐蓝-空
发布于 2016/02/22 17:32
字数 951
阅读 33
收藏 0

1.iOS程序启动画面的制作

     做一张名为Default.png的欢迎界面图片放在Supporting Files文件夹下替换掉默认的Default.png(为了适配,需要做Default.png、Default@2x.png、Default-568h@2x.png三种尺寸各一张)。
     然后在XXXAppDelegate.m中

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions  这个方法中插入以下一行代码:

  [NSThread sleepForTimeInterval:5.0];  
  //其实这一行代码也可以不加,因为默认情况下欢迎界面的时间只有一秒,加这一句是延长
  //欢迎界面的展示时间到5秒,时间大家可以自己定义。

  例如:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
  self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
  self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]autorelease];

  [NSThread sleepForTimeInterval:5.0];

  self.window.rootViewController = self.viewController;
  [self.window makeKeyAndVisible];
  return YES;
}

这样页面就停留5秒后再消失了。


2.控制textView从最顶端开始显示

    if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) {
        self.automaticallyAdjustsScrollViewInsets = NO;
    }


3.数组筛选,根据两个字段进行筛选 判断数组对象中的cityName和pinyin两个字段是否都匹配

   NSPredicate *predicate = [NSPredicate predicateWithFormat:@"cityName contains [cd] %@ OR pinyin BEGINSWITH [cd] %@", _searchController.searchBar.text,_searchController.searchBar.text];
   _filterData = [[NSArray alloc] initWithArray:[_cityData filteredArrayUsingPredicate:predicate]];

4.更改状态栏字体颜色

1)、如果使用了UINavigation 则自己实现一个 UINavigationController 
并在实现的这个自定义导航控制器中重写一个方法:
- (UIViewController *)childViewControllerForStatusBarStyle{
    return self.topViewController;
}
表示所有的状态栏效果都跟随根控制器。
2)、在每一个控制器类中,通过调用下面方法可变更状态栏文字颜色为默认(黑色)或者白色
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];//白色
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];//黑色

3)、其他变更方法:



5.导航效果存在但是使用自定义导航条的解决办法

[self.navigationController setNavigationBarHidden:NO];       // 使导航条有效
[self.navigationController.navigationBar setHidden:YES];//但是隐藏bar 使用自定义


6.手动调整状态栏方向

ios7,碰到个需要手动调整状态栏方向的问题,于是调用了下面这段代码。
//设置状态栏 横屏
[[UIApplication sharedApplication]setStatusBarOrientation:UIInterfaceOrientationLandscapeRight];

问题来了,没有效果。
原因是 UIviewController方法- (BOOL)shouldAutorotate 返回值为YES的时候是不生效的。
发现原因了,马上解决,发现还是不行。
立马发现了下个问题,覆写方法- (BOOL)shouldAutorotate,仍然未生效。

答案是:由于UIViewController放置在Navigation中,而由于Navigation不人性化的设计,
navigation的- (BOOL)shouldAutorotate是不会根据显示ViewController的- (BOOL)shouldAutorotate设置的值来改变的。

解决办法:将下面这段代码贴在AppDelegate.m的最后面,这个时候Navigation就会根据你显示的ViewController改变返回值了,然后你再去ViewController中覆写方法,返回NO,这时候,方法生效了!bingo!

@implementation UINavigationController (Rotation)
- (BOOL)shouldAutorotate
{
    return [[self.viewControllers lastObject] shouldAutorotate];
}
- (NSUInteger)supportedInterfaceOrientations
{
    return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}
@end


7.当xcode更新到7.0后项目变化带来的问题(持续更新)

1)、IOS9 开始产生的问题:在iOS9 beta1中,苹果将原http协议改成了https协议,使用 TLS1.2 SSL加密请求数据。

解决办法:

在info.plist中添加
<key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key><true/></dict>


2)、xcode7更新后 出现的真机调试错误

ld: 'MAMapKit.framework/MAMapKit' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture armv7

问题分析:

从上述的错误中应该可以看出,这是因为一个第三方的库不兼容,我的工程中开启了 ENABLE_BITCODE (应该是升级之后自动转换的),而这个第三方的库在编译的时候没有 enable bitcode,所以导致上诉问题。

解决方法:

应该是有两种吧,一种就是换成 enable bitcode 的第三方库,再有一种就是将工程的 ENABLE_BITCODE 设置为 false 就可以了。



© 著作权归作者所有

共有 人打赏支持
上一篇: 推荐文章
汐蓝-空
粉丝 0
博文 25
码字总数 13306
作品 0
深圳
私信 提问
那些在学习iOS开发前就应该知道的事(part 1)

英文原文:Things I wish I had known before starting iOS development—Part 1 设计师设计出来了一个不错的引导界面,然而当我看到设计稿的时候,我们的app也没几天就要上线了。这个界面模...

TomatosX
2015/06/12
0
0
Facebook iOS 新版开发手记:两倍速度的背后

Facebook上周发布了新版iOS应用,号称速度提升两倍。Facebook工程师Jonathan Dan在Facebook官方页面中撰文,介绍了新版iOS应用、Facebook iOS应用的发展历程以及开发思路。《创事记》特选取此...

oschina
2012/08/30
2.7K
13
好坏美丑,开发者眼中的 iOS 7

跟着新 iPhone 发布的节奏,iOS 史上转变最大的 iOS 7 将要在苹果的各类新产品上大展拳脚了。从消费者眼里看来,这种转变是拟物化向扁平化的转变和新加入的控制中心等。但是对于开发者而言,...

oschina
2013/08/29
5.3K
42
谷歌Flutter跨平台应用开发SDK迎来首个发行预览版本

谷歌Flutter跨平台应用开发SDK迎来首个发行预览版本 2018-06-22 12:26编辑: 枣泥布丁分类:程序人生来源:程序师 跨平台Google Flutter预览版本 招聘信息: 图像处理及模式识别工程师 C/C+...

枣泥布丁
2018/06/22
0
0
OSC 第 63 期高手问答 —— iOS 开发进阶

OSCHINA 本期高手问答( 3月17日- 3月21日)我们请来了@唐巧 为大家解答关于 iOS 开发 方面的问题。 @唐巧 ,Blogger、InfoQ 编辑,资深 iOS 开发者。曾在网易参与过网易邮箱、网易微博、有道云...

叶秀兰
2015/03/17
3.5K
39

没有更多内容

加载失败,请刷新页面

加载更多

npm安装教程

一、使用之前,我们先来掌握3个东西是用来干什么的。 npm: Nodejs下的包管理器。 webpack: 它主要的用途是通过CommonJS的语法把所有浏览器端需要发布的静态资源做相应的准备,比如资源的合并...

Bob2100
20分钟前
0
0
Failure to find net.sf.json-lib:json-lib:jar:2.2.2

Could not resolve dependencies for project com.platform:platform-gateway:jar:1.0: Failure to find net.sf.json-lib:json-lib:jar:2.2.2 in http://maven.aliyun.com/nexus/content/gro......

SummerGao
23分钟前
0
0
netty 系列博客

https://blog.csdn.net/tjreal/article/list/2?

Java搬砖工程师
25分钟前
0
0
《大话数据结构》读后总结(二)

一、数据结构基本概念 1. 数据类型 数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。 在C语言中,按照取值的不同,数据类型可以分为两类: 原子类型:是不可以再分解...

徐曙辉
29分钟前
4
0
数据清理的终极指南

我花了几个月的时间分析来自传感器、调查及日志等相关数据。无论我用多少图表,设计多么复杂的算法,结果总是会与预期不同。更糟糕的是,当你向首席执行官展示你的新发现时,他/她总会发现缺...

阿里云官方博客
31分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部