隐藏UINavigationController黑色分割线

  1. 首先在viewDidLoad 定义一个 UIImageView *navigationImageView 来存储底部分割线。

    1
    2
    3
    //找到导航栏底部的横线
    UIImageView *navigationImageView = [self findlineImageView:self.navigationController.navigationBar];
    self.navigationImageView = navigationImageView;
  2. 在viewWillAppear隐藏分割线,在viewDidDisappear中显示分割线

1
2
3
4
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.navigationImageView.hidden = YES;
}

Read More

iOS9网络访问失败

升级Xcode 7.0 bata发现网络访问失败。
输出错误信息

1
2
The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.
iOS9引入了新特性App Transport Security (ATS)。

新特性要求App内访问的网络必须使用HTTPS协议。
但是现在公司的项目使用的是HTTP协议,使用私有加密方式保证数据安全。现在也不能马上改成HTTPS协议传输。

最终找到以下解决办法:

Info.plist中添加NSAppTransportSecurity类型Dictionary。

NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES.

iOS中Bitcode的介绍及配置 关于Xcode7报错

今天在一个网站上看到一篇关于第三方库不包含bitcode就会报错的文章,感觉剖析得很详细,分享出来,希望可以对iOS初入门者有所帮助。下面我们就一起来看看吧。

用Xcode 7 beta 3在真机(iOS 8.3)上运行一下工程,结果发现工程编译不过。看了下问题,报的是以下错误:

1
ld: ‘/UsersFramework/SDKs/PolymerPay/Library/mobStat/lib**SDK.a(**ForSDK.o)’does not contain bitcode. You must rebuild it with bitcode enabled (Xcodesetting ENABLE_BITCODE), obtain an updated library from the vendor, or disablebitcode for this target. for architecture arm64

得到的信息是引入的一个第三方库不包含bitcode。

Read More

Unicode转码 解码

To Unicode

1
2
3
4
5
- (NSString *)encodeToPercentEscapeString: (NSString *) input
{
NSString* outputStr = (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,(__bridge CFStringRef)input,NULL,(CFStringRef)@"!*'();:@&=+$,/?%#[]",kCFStringEncodingUTF8);
return outputStr;
}

Decode Unicode

1
2
3
4
5
6
7
8
- (NSString *)decodeFromPercentEscapeString: (NSString *) input
{
NSMutableString *outputStr = [NSMutableString stringWithString:input];

[outputStr replaceOccurrencesOfString:@"+" withString:@"" options:NSLiteralSearch range:NSMakeRange(0,[outputStr length])];

return [outputStr stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}

关于@synchronized()

@synchronized 的作用是创建一个互斥锁,保证此时没有其它线程对self对象进行修改。这个是objective-c的一个锁定令牌,防止self对象在同一时间内被其它线程访问,起到线程的保护作用。 一般在公用变量的时候使用,如单例模式或者操作类的static变量中使用。

例如单例:

1
2
3
4
5
6
7
8
9
10
+(MPSingletonManager *)shareInstance
{
static MPSingletonManager * singletonManager = nil;
@synchronized(self){
if (!singletonManager) {
singletonManager = [[MPSingletonManager alloc]init];
}
}
return singletonManager;
}