IOS代码段

图片如何存入 iPhone 本地 Documents 的方法

 

在 UIButton 的 setImage 方法里添加一张图片,以下代码可将图片存入本地的 Documents 下 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [

在 UIButton 的 setImage 方法里添加一张图片,以下代码可将图片存入本地的 Documents 下

  1. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,     NSUserDomainMask, YES);
  2. NSString *documentsDirectory = [paths objectAtIndex:0];
  3. NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"];
  4. //also be .jpg or another
  5. UIImage *image = imageView.image; // imageView is your image
  6. NSData *imageData = UIImagePNGRepresentation(image);
  7. //UIImageJPEGRepresentation(image)
  8. [imageData writeToFile:savedImagePath atomically:NO];  

 

 

IPhone的多线程编程初体验

 

流程大概如下:

1. 创建一个线程

 

[cpp]  view plain copy
  1. [NSThread detachNewThreadSelect:@selector(BeginThread)    
  2.   toTarget:selft    
  3.   withObject:nil];    
 

 

 

2.线程里做两件,一件是后台处理耗时间的活(dosomethinglongtime),另一件是更新UI(UpdateUI)

 

 

[cpp]  view plain copy
  1. -(void) BeginThread{    
  2. [self performSelectorInBackgroud:@selector(dosomethinglongtime)    
  3.  withObject:nil];    
  4. [self perfomSelectorOnMainThread:@selector(UpdateUI)    
  5.  withObject:nil    
  6. watUntilDone:NO];    
  7. }    
 

 

3. 那UpdateUI的数据怎么来呢?

 

[cpp]  view plain copy
  1. -(void)dosomethinglongtime{    
  2. // 修改共享变量 varProgress, varText等等    
  3. }    
  4.     
  5. -(void)UpdateUI{    
  6. // 获得共享变量 varProgress, varText等等, 显示在界面上    
  7. }    
 

 

4.这样就完成了一个大概的流程,但是UpdateUI里不能用while(1),不然主线程会堵在UpdateUI的函数里,怎么办呢? Google了一个方法, UpdateUI的方法做了一下修改

 

 

[cpp]  view plain copy
  1. -(void)UpdateUI{    
  2. // 获得共享变量 varProgress, varText等等, 显示在界面上    
  3. if(!finished)    
  4.      [NSTimer scheduledTimerWithTimeInterval:0.2    
  5.  target:self    
  6. selector:@selector(UpdateUI)    
  7.  userInfo:nil repeats:NO];    
  8. }    
 

 

 

这样的意思, 如果没线程没结束,过0.2秒再回到这个函数更新界面, 如此循环, 直到结束.

以上IPhone多线程编程的一种方法, 下一篇就讲一下用NSOperation和NSOperationQueue来实现.


 

[IPhone开发]发送Http请求(POST GET)的方法

 

 

我们知道Http有Get和Post两种方法,我们分开说吧.

另注: 今天讲的方法是同步的请求, 异步的方法我还没试过, 不知道有没有使用异步的需求, 有的话于发上来和大家分享.

1.Get方法

1.1 使用NSMutableURLRequest

 

[c-sharp]  view plain copy
  1. NSURL* url = [NSURL URLWithString:@"http://aminby.net"];    
  2. NSMutableURLRequest* request = [NSMutableURLRequest new];    
  3. [request setURL:url];    
  4. [request setHTTPMethod:@"GET"];    
  5. NSHTTPURLRequest* response;    
  6. NSData* data = [NSURLConnection sendSynchronousRequest:request    
  7.               returningResponse:&response error:nil];    
  8. [NSString* strRet = [[NSString alloc] initWithData:data encoding:NSUTF8String];    
  9. NSLog(strRet);    
  10. [strRet release];    
 

 

1.2 使用NSString

 

[c-sharp]  view plain copy
  1. / options有两个枚举,NSMappedRead这个不懂, NSUncachedRead是不缓存    
  2. [NSData dataWithContentsOfURL:(NSURL *)url    
  3.         options:(NSUInteger)readOptionsMask    
  4.         error:(NSError **)errorPtr]    
  5. //  或者    
  6. [NSData dataWithContentsOfURL:(NSURL *)url];    
 

 

 

1.2和1.3的方法是缺点是没办法知道response的status,一般是返回200-299之间的数值代表请求成功.我们可以依照这个code来做数据处理, 如果对地址存在很有把握,就可以使用后两种简单的GET方法.

今天查了一下手册,发现NSArray NSDictionary 也有xxxxWithContentsOfURL的方法, 这两个我还没用过, 应该是跟NSData和NSString一样,但具体怎么用我还不清楚.

 

 

 

2.Post方法

2.1 使用NSMutableURLRequest

 

[c-sharp]  view plain copy
  1. NSURL* url = [NSURL URLWithString:@"http://aminby.net"];    
  2. NSMutableURLRequest*  request = [NSMutableURLRequest new];    
  3. [request setURL:url];    
  4. [request  setHTTPMethod:@"GET"];    
  5. [request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];    
  6. [request setHTTPBody:@"some param"];    
  7. NSHTTPURLRequest* response;    
  8. NSData* data =  [NSURLConnection sendSynchronousRequest:request    
  9.          returningResponse:&response error:nil];    
  10. [NSString* strRet =  [[NSString alloc] initWithData:data encoding:NSUTF8String];    
  11. NSLog(strRet);    
  12. [strRet  release];    

 

 

iphone图片等比缩放

 

 

UIImage *img = imgView.image;

 

int h = img.size.height;

int w = img.size.width;

if(h <= 320 && w <= 480)

{

imgView.image = img;

}

else 

{

float b = (float)320/w < (float)480/h ? (float)320/w : (float)480/h;

CGSize itemSize = CGSizeMake(b*w, b*h);

UIGraphicsBeginImageContext(itemSize);

CGRect imageRect = CGRectMake(0, 0, b*w, b*h);

[img drawInRect:imageRect];

imgView.image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

}

 

 

 

 

 

 

[iOS开发必备工具之]图片的异步加载与图片缓存

 

 

http://blog.csdn.net/ipromiseu/article/details/6595367

 

 

http://blog.csdn.net/ipromiseu/article/details/6595337

 

 

 

你可能感兴趣的:(ios)