dispatch_async(dispatch_get_global_queue(0, 0), ^{
if (_signatureStr) {
NSData *baseData = [[NSData alloc] initWithBase64EncodedString:_signatureStr options:NSDataBase64DecodingIgnoreUnknownCharacters];
if (!baseData) {
return ;
}
self.signatureImage = [UIImage imageWithData:baseData];
}
if (!self.signatureImage) {
return ;
}
CGSize size = self.signatureImage.size;
CGFloat rate = size.height/size.width;
CGFloat view_w = SCREEN_WIDTH-30*2;
CGFloat view_h = view_w*rate;
CGFloat view_x = 30;
CGFloat view_y = 30;
[self.signatureView setImage:self.signatureImage];
self.signatureView.frame = CGRectMake(view_x, view_y, view_w, view_h);
dispatch_async(dispatch_get_main_queue(), ^{
[self.view addSubview:self.signatureView];
});
});
异步处理图片,然后回到主线程addSubView
,看似没有什么问题,确实没什么问题,模拟器正常显示,但是在我的iPhone5s 版本iOS 9.2.1,却不显示图片,然后用其他手机却是正常显示的。只能说是系统问题吧!
修正部分
大神给我指出了错误点,不能单单的把addSubview:
放在主线程中就万事大吉了,同时也应该注意setImage:
这个操作,UI的渲染还是必须放在主线程里面操作的,你看我这半吊子水平,看来还是要再严谨一点。
日常记录一下