在ios开发漫长道路上,我们一直坚挺,有人倒下,有人重新站起来,。。。
好吧,不装逼,上干货,以前都是自己上传到自己印象笔记,但还是感觉跟大家分享下比较好,欢迎指出,共同进步,我会持续更新的。。
问题集合
1.lable如果是数字0跟1对不齐,宽度不一致
解决:Lable.adjustsFontSizeToFitWidth=YES. 这时候lable宽度不变,文字可以自适应大小;
第二就是根据文字多少,让lable宽度自适应
2.富文本中左边是文字,右边是图片,图片右边被切(设置了bounds—距离文字的远近以及尺寸)
解决:(label用了sizetofit方法 让label自适应造成的)
1.固定宽度
2.在后边更新尺寸,可以更新尺寸时候把width加上那个被切的尺寸
3.在tableview中手势点击头像跳转,怎么知道indexpath
解答:
/*
*头像点击
*/
-(void)iconTap:(UIGestureRecognizer *)tap{
CGPoint point = [tap locationInView:self.mainTableView];
NSIndexPath *indexpath = [self.mainTableView indexPathForRowAtPoint:point]; // 可以获取我们在哪个cell上
if (self.isAllEvalute==YES?self.allEvaluteArr.count>0:self.skillEvaluteAr.count >0) {
YBCommentListDataInfo *info = self.isAllEvalute==YES?self.allEvaluteArr[indexpath.row]:self.skillEvaluteAr[indexpath.row];
[self goUserInfo:info.MemberId AndTitle:nil];
}
}
或者
如果只知道控件,就可以知道在哪个cell上
UITableViewCell *cell = (UITableViewCell *)[[taglist superview] superview];
NSIndexPath *indexPath = [(UITableView *)[[cell superview] superview] indexPathForCell:cell];
4.在tableview里面tableviewcell上面一个textview,textview不能滚动问题
解答:因为调用了scrollview的代理方法,scrollviewdidscroll
在这个方法里本来是在获取tableview的滑动变化量,但是textview也是继承scrollview,所以造成也走了这个方法。造成textview的contentsize变小了
做个判断,如果不是这个类的话,才。。。。
5.图片超出了父类的范围不能点击
解决: 1 - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
1. UIView *view = [super hitTest:point withEvent:event];
2. if (view == nil) {
3. CGPoint tempoint = [btn convertPoint:point fromView:self];
4. if (CGRectContainsPoint(btn.bounds, tempoint))
5. {
6. view = btn;
7. }
8. }
9. return view;
10. }
6.去掉首尾空格
str = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];//去掉首位空格
去掉首尾空格跟回车
chineseString.string = [chineseString.string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
7.id与instanceType的区别
id返回任意类型的数据
instanceType返回的是相同类型的数据
如果一个不是关联返回类型的方法,如下:
1. @interface NSArray
2. + (id)constructAnArray;
3. @end
当我们使用如下方式初始化NSArray时:
1. [NSArray constructAnArray];
根据Cocoa的方法命名规范,得到的返回类型就和方法声明的返回类型一样,是id。
但是如果使用instancetype作为返回类型,如下:
1. @interface NSArray
2. + (instancetype)constructAnArray;
3. @end
当使用相同方式初始化NSArray时:
1. [NSArray constructAnArray];
得到的返回类型和方法所在类的类型相同,是NSArray*!
总结一下,instancetype的作用,就是使那些非关联返回类型的方法返回所在类的类型!
instancetype和id的异同
1、相同点
都可以作为方法的返回类型
2、不同点
①instancetype可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象;
②instancetype只能作为返回值,不能像id那样作为参数,比如下面的写法:
8.上线中的坑
[置顶] xcode8 iOS10上关于NSPhotoLibraryUsageDescription NSCameraUsageDescription 等问题
最近升级了Xcode8.0,真是很多坑啊,填完一个来另外一个,今天又遇到了一个,用Xcode8.0上传项目时被驳回说是info.plist里面没有设置NSPhotoLibraryUsageDescription、NSCameraUsageDescription、NSContactsUsageDescription、NSMicrophoneUsageDescription等字段,之前这些都是预设的不用加,现在强制了,真是郁闷,下面贴上解决方案
被驳回的原因:
This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.
This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.
大概意思就是得在plist里面必须加上NSPhotoLibraryUsageDescription和NSCameraUsageDescription的键值对才行,之前都是默认的,现在必须加,要不不让通过,真是坑啊~~具体配置如下图:
大概统计了一下需要加的一些字段列在下面:
* NSContactsUsageDescription -> 通讯录
* NSMicrophoneUsageDescription -> 麦克风
* NSPhotoLibraryUsageDescription -> 相册
* NSCameraUsageDescription -> 相机
* NSLocationAlwaysUsageDescription -> 地理位置
* NSLocationWhenInUseUsageDescription -> 地理位置
目前先写这么多吧,欢迎大家抨击我,转载请绕路。