ios开发中遇到过的问题
2018-09-30 本文已影响0人
jimmywife
1.SDWebImage篇
[self sd_setImageWithURL:url placeholderImage:placeholdeerImage options:0 progress:
^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) ;
如果这个地方报错,高版本需要加NSURL * _Nullable targetURL,低版本则需要去掉
2.控件阴影篇
有时候发现给一个视图添加阴影的时候,效果根本显示不出来,找了好久都没找到原因,最后竟然发现是给视图加了这句话:
view.layer.masksTobounds = YES;导致的,去掉之后就会惊喜的发现阴影已经出来啦~~~~
附例子:UIView *shadowView = [[UIView alloc] initWithFrame:CGRectMake(ScreenX375(18), ScreenX375(8), SCREEN_WIDTH - ScreenX375(36), ScreenX375(132))];
// shadowView.layer.masksToBounds = YES;
shadowView.layer.cornerRadius = ScreenX375(12);
shadowView.layer.shadowOffset = CGSizeMake(0, 4); //设置阴影的偏移量
shadowView.layer.shadowRadius = ScreenX375(16); //设置阴影的半径
shadowView.layer.shadowColor = RGBACOLOR(0, 0, 0, 0.09).CGColor; //设置阴影的颜色为黑色
shadowView.layer.shadowOpacity = 1; //设置阴影的不透明度
shadowView.backgroundColor = [UIColor whiteColor];
[self addSubview:shadowView];
再加一句话:如果把其他控件加到设置阴影的视图上,子控件也会有阴影。所以要是不希望别的也有阴影,就别把控件加到设置阴影的视图上啦~~~
3.控件自适应高度篇
赋例子:CGSize size = [self.detailLabel.text boundingRectWithSize:
CGSizeMake(SCREEN_WIDTH-ScreenX375(40), MAXFLOAT)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName:Kfont(15)} context:nil].size;
其中self.detailLabel.text是需要根据这些文本来计算
CGSizeMake()设置的尺寸大小是当前控件的宽度和最大高度MSXFLOAT,之前一直以为是最大宽度:屏幕的宽度和最大高度,所以设置的时候一直会出现问题。
attributes:@{NSFontAttributeName:Kfont(15)}这个里面是写的控件的属性字体名称和大小,根据字体和文本来计算控件的高度
4.数组篇
被自己蠢哭了都,还一直遍历数组取出所有的内容,费劲巴拉的再拼接出来,最后发现数组自带的就有一种方法可以拼接。
上代码:
NSArray *array = @[@"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9"];
// 将array中的所有元素组合成一个字符串,并用“,”分隔开。
NSString *str = [array componentsJoinedByString:@","];
5.导入三方框架出现"Unknown type name 'NSString'"错误
解决方法:在所在的项目pch文件把自己所#import的头文件做如下操作:
#ifdef __OBJC__
#import .........
#endif
分析了一下,zipArchive库是C OC C++文件混编,pch文件加的头文件都是全局性的,当在C文件中#import是没有意义的,所以要用ObjC分开。
6.开发中variable is not assignable missing block的解决办法
当我们在block中调用局部变量的时候就会出现这样的错误提示,解决方法:
在声明局部变量的时候前面加上 static 即可:
static BOOL isHidden;
[XXXX XXXX ^{
isHidden = YES;
}];