记录写项目过程中一些不知道的方法。

1、- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:

(NSInteger)topCapHeight 这个函数是UIImage的一个实例函数,它的功能是创建一个内容可拉伸,而边角不拉伸的图片,需要两个参数,第一个是左边不拉伸区域的宽度,第二个参数是上面不拉伸的高度。

根据设置的宽度和高度,将接下来的一个像素进行左右扩展和上下拉伸。

注意:可拉伸的范围都是距离leftCapWidth后的1竖排像素,和距离topCapHeight后的1横排像素。

参数的意义是,如果参数指定10,5。那么,图片左边10个像素,上边5个像素。不会被拉伸,x坐标为11和一个像素会被横向复制,y坐标为6的一个像素会被纵向复制。

注意:只是对一个像素进行复制到一定宽度。而图像后面的剩余像素也不会被拉伸。

UIImage *img=[UIImage imageNamed:@"bubbleSelf.png"];
    img=[img stretchableImageWithLeftCapWidth:15 topCapHeight:12];
    UIImageView *imgView=[[UIImageView alloc]initWithImage:img];
    [imgView setFrame:CGRectMake(10, 10, 200, 200)];
    [self. view addSubview:imgView];

 2、和我遇到的问题一样,直接复制的网上的。

不小心在开发过程中,得到了(null)以及<null>的返回值,找了好长时间只找到了一个关于<null>的。

由于要根据返回值进行判断,做出必要反应,因此必须知道返回值所代表的具体字符,在得到(null)后利用isEqual:和@“”,NULL,@“(null)”,nil,Nil比较后均得不到正确结果,弄得不知所措了,但是还是感觉像nil,不得已,创建一个字符串,赋值为nil,打印输出,果然是(null),想不通的是为什么不等。最后试了一下“==”,成功了。费尽周折之后才明白原来要这样用:

if(m_result==nil)

{

NSLog(@"KDA!");

}

还有就是<null>,从网上找到了用法:

if([m_result isEqual:[NSNUll null]])

{

NSLog(@"KDA!");

}问题很简单,找不到原因解决就难了,不由感叹,基础最关键啊。

3、今天在自定义一个cell的时候,自定义cell上有一个按钮,写完之后,发现运行出来的界面上没有这个按钮,后来试了几次,发来可能是因为使用了懒加载的原因,于是试了一下,果然是这样。问了旁边的大神才知道,cell是一个View,他自己没有被用到的时候,他自己就不存在,所以要用懒加载的话只能写在控制器里面。

4、打包的时候,product->archive是灰色的,如果scheme->edit scheme改成release后还是灰色的,可能是选择的是模拟器,改成generic ios device 就可以了。

5、对字典中的key进行排序

NSArray *keys = [_paramsDic allKeys];
    //按key排序
    NSArray *sortedArray = [keys sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
        NSComparisonResult result = [obj1 compare:obj2];
        return result == NSOrderedDescending; //升序
    }];
    NSMutableArray *arr = [NSMutableArray array];
    for (NSString *key in sortedArray) {
        id value = [_paramsDic objectForKey:key];
        NSString *appendStr = [NSString stringWithFormat:@""%@":"%@"",key,value];
        [arr addObject:appendStr];
    }
    //用","拼接数组内的字符串
    NSString *arrStr = [arr componentsJoinedByString:@","];
    NSString *paramsString = [NSString stringWithFormat:@"%@%@%@",@"{",arrStr,@"}"];

 6、服务器要求传递的参数为json类型的字符串

 1   NSString *urlStr = @"http://music.163.com/#/song?id=5086081";
 2     AFHTTPSessionManager *manager=[AFHTTPSessionManager manager];
 3     //发送json格式的请求参数-->虽然下面我们看似传的是一个字典,但是写了下面这句代码后,就会自动把字典参数转换为json格式的字符串类型的参数传给服务器
 4     manager.requestSerializer=[AFJSONRequestSerializer serializer];
 5     //返回json格式的字符串
 6     manager.responseSerializer=[AFJSONResponseSerializer serializer];
 7     NSMutableDictionary *dic = [NSMutableDictionary dictionary];
 8     dic[@"id"] = @"5086081";
 9     [manager POST:urlStr parameters:dic success:^(NSURLSessionDataTask *task, id responseObject) {
10         NSLog(@"请求成功");
11     } failure:^(NSURLSessionDataTask *task, NSError *error) {
12         NSLog(@"请求失败");
13     }];

 7、获取图片的大小:

CGSize size= [UIImage imageNamed:@"jjsx"].size;
//path 图片的本地路径
CGSize size=[UIImage imageWithContentsOfFile:path].size;

8、定位服务

// 判断的手机的定位功能是否开启
    // 开启定位:设置 > 隐私 > 位置 > 定位服务
    if ([CLLocationManager locationServicesEnabled]) {
        // 启动位置更新
        // 开启位置更新需要与服务器进行轮询所以会比较耗电,在不需要时用stopUpdatingLocation方法关闭;
        [self.locationManager startUpdatingLocation];
    }
// 判断的App的定位功能是否开启
CLAuthorizationStatus status = [CLLocationManager authorizationStatus]; if (kCLAuthorizationStatusDenied == status || kCLAuthorizationStatusRestricted == status) {
NSLog(@"请前往设置开启app的定位功能");
}
询问是否开启定位功能       
//1.需获取地理位置权限 //添加实例 _locationManeger = [[CLLocationManager alloc] init]; [_locationManeger startUpdatingLocation]; //询问用户,获得权限。会有一个弹窗,询问用户是否允许app获取当前地理位置 if (iOS8) { //使用应用程序期间允许访问位置数据 [locationManager requestWhenInUseAuthorization]; //始终允许访问位置信息 // [locationManager requestAlwaysAuthorization];
        }

具体定位步骤请参考:http://blog.devzeng.com/blog/ios8-corelocation-framework.html

原文地址:https://www.cnblogs.com/zpt1011/p/5318345.html