iOS一些总结

在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的键值对才行,之前都是默认的,现在必须加,要不不让通过,真是坑啊~~具体配置如下图:

iOS一些总结_第1张图片

大概统计了一下需要加的一些字段列在下面:

* NSContactsUsageDescription -> 通讯录

* NSMicrophoneUsageDescription -> 麦克风

* NSPhotoLibraryUsageDescription -> 相册

* NSCameraUsageDescription -> 相机

* NSLocationAlwaysUsageDescription -> 地理位置

* NSLocationWhenInUseUsageDescription -> 地理位置


目前先写这么多吧,欢迎大家抨击我,转载请绕路。

你可能感兴趣的:(iOS一些总结)