iOS-常见问题
iOS-常见问题
我们在写程序的时候,屏幕的宽高我们不能写固定,例如写成320,480之类的,因为我们要适配不同的手机。常用的一种方法是在 .pch文件中设置宽高,因为.pch是一个预编译文件,在全局都能访问到。
#define ScreenHeight [UIScreen mainScreen].bounds.size.hight;
#define ScreenWidth [UIScreen mainScreen].bounds.size.width;
预编译文件创建:
问题二:
这个问题比较简单,完全算不上技巧,但是有时我们会忽略这个用法。就是给UIView设置背景图片。
view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@background.png"]];
问题三:
我们的图片是方形的,我们想让它以圆形或者椭圆类似的形状在界面上显示。
_image = [[UIImageView alloc]initWithFrame:CGRectMake(0,0,80,80)];
_image.layer.cornerRadius = 40;//大小不同,形状不同
_image.clipsToBounds = YES;
问题四:
如何获取主窗口的三种方法。
UIApplication *app=[UIApplication shareApplication];
1.UIWindow *window = app.keyWindow;
2.UIWindow *window = app.delegate.window;
3.UIWindow *window = [app.windows objectAtIndex:0];
当然我们也可以使用连写的方法:比如:UIWindow *window = [UIApplication shareApplication].delegate.window;
问题五:
我们有时候不小心修改了系统的API,或者其它的一些操作,出现了以下问题该怎么办?
错误信息:fatal error :file /Application ……….
Note: after modifying system headers, please delete the module cache at /Users …..
解决办法:前往/Users….这个文件夹,删除里面的文件,然后clean一下程序即可解决.
问题六:
我们如何让定时器暂停和开始,并不是开启和关闭。
NSTimer *timer = [NSTimer sch……];
[timer setFireDate :[NSDate distantFuture]];//暂停
[timer setFireDate :[NSDate distantPass]]//开始
问题七:
在网络请求中,如果请求体中有汉字的话,请求会出错,怎样解决?
假设请求体为:NSString *urlString= @“http://v.juhe.cn/weather/index?cityname=北京”;
因为有汉字字符,请求会出错。处理办法:
urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
问题八:
如何让我们的图片放大不变形。
_image = [[UIImage imageNamed:@"a.png"]stretchableImageWithLeftCapWidth:20 topCapHeight:10];
问题九:
ARC和非ARC混编。
如果你的项目中使用的是非ARC,导入的ARC代码的文件,需要在ARC模式的文件代码中加入-fobjc-arc标签
如果你的项目中使用的是ARC模式,则为非ARC模式的代码文件加入-fno-objc-arc标签
添加标签方法:target->build phases->compile sources ,双击对应的 .m文件,在弹出框中输入标签。
问题十:
在自定义xib中cell的时候,UIImageView的图形跟定义的大小不匹配,可能按照原图片显示。
可能出现的问题是:UIImageView的命名为imageView,这个名字和系统的名字冲突,图片不能按预期的显示。
问题十一:
uitableview代理不调用。
常见的是没有设置代理。
还有一种情况是继承错误,一般来说是继承UIViewController,如果继承关系写错,代理方法不会调用。
问题十二:
如何找到xib上的view,可能有多个,可以用数组接收。
NSArray *nib = [[NSBundle mainBundle]loadNibNamed:@"CustomView" owner:self options:nil];
//得到第一个UIView
UIView *tmpCustomView = [nib objectAtIndex:0];
问题十三:
根据文字内容,确定文字占的区域大小
CGRect rect = [str boundingRectWithSize:CGSizeMake(300, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:15]} context:nil];
问题十四:
在UIButton上添加一个UIView,会使得UIButton的点击事件不能响应,解决办法是将UIView的可交互性改为NO.
问题十五:
如果界面中有ScrollView,并且界面中有导航条,视图控制器会默认给scrollview设置一个64偏移。
我们可以使用self.automaticallAdjustsScrollViewInsets = NO,scrollview不会偏移。
tabbar高度49,导航加状态栏高度64.
问题十六:
我们可以使用下面的方法打印出所在的类,和函数:
NSLog(@"%s",__FUNCTION__);
问题十七:
语法糖基本写法:
NSString *str = @"123";
NSDictionary *dict = @{@"name":@"wyg",@"age":@"12",@"sex":@"boy"};
NSArray *arr = @[@"1",@"2"];
NSString *st = arr[1];
NSNumber *intNumber = @123;
NSNumber *boolNumber = @NO;