图片如何存入 iPhone 本地 Documents 的方法
在 UIButton 的 setImage 方法里添加一张图片,以下代码可将图片存入本地的 Documents 下 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [
在 UIButton 的 setImage 方法里添加一张图片,以下代码可将图片存入本地的 Documents 下
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
- NSString *documentsDirectory = [paths objectAtIndex:0];
- NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"];
- //also be .jpg or another
- UIImage *image = imageView.image; // imageView is your image
- NSData *imageData = UIImagePNGRepresentation(image);
- //UIImageJPEGRepresentation(image)
- [imageData writeToFile:savedImagePath atomically:NO];
IPhone的多线程编程初体验
流程大概如下:
1. 创建一个线程
- [NSThread detachNewThreadSelect:@selector(BeginThread)
- toTarget:selft
- withObject:nil];
2.线程里做两件,一件是后台处理耗时间的活(dosomethinglongtime),另一件是更新UI(UpdateUI)
- -(void) BeginThread{
- [self performSelectorInBackgroud:@selector(dosomethinglongtime)
- withObject:nil];
- [self perfomSelectorOnMainThread:@selector(UpdateUI)
- withObject:nil
- watUntilDone:NO];
- }
3. 那UpdateUI的数据怎么来呢?
- -(void)dosomethinglongtime{
-
- }
-
- -(void)UpdateUI{
-
- }
4.这样就完成了一个大概的流程,但是UpdateUI里不能用while(1),不然主线程会堵在UpdateUI的函数里,怎么办呢? Google了一个方法, UpdateUI的方法做了一下修改
- -(void)UpdateUI{
-
- if(!finished)
- [NSTimer scheduledTimerWithTimeInterval:0.2
- target:self
- selector:@selector(UpdateUI)
- userInfo:nil repeats:NO];
- }
这样的意思, 如果没线程没结束,过0.2秒再回到这个函数更新界面, 如此循环, 直到结束.
以上IPhone多线程编程的一种方法, 下一篇就讲一下用NSOperation和NSOperationQueue来实现.
[IPhone开发]发送Http请求(POST GET)的方法
我们知道Http有Get和Post两种方法,我们分开说吧.
另注: 今天讲的方法是同步的请求, 异步的方法我还没试过, 不知道有没有使用异步的需求, 有的话于发上来和大家分享.
1.Get方法
1.1 使用NSMutableURLRequest
- NSURL* url = [NSURL URLWithString:@"http://aminby.net"];
- NSMutableURLRequest* request = [NSMutableURLRequest new];
- [request setURL:url];
- [request setHTTPMethod:@"GET"];
- NSHTTPURLRequest* response;
- NSData* data = [NSURLConnection sendSynchronousRequest:request
- returningResponse:&response error:nil];
- [NSString* strRet = [[NSString alloc] initWithData:data encoding:NSUTF8String];
- NSLog(strRet);
- [strRet release];
1.2 使用NSString
- / options有两个枚举,NSMappedRead这个不懂, NSUncachedRead是不缓存
- [NSData dataWithContentsOfURL:(NSURL *)url
- options:(NSUInteger)readOptionsMask
- error:(NSError **)errorPtr]
-
- [NSData dataWithContentsOfURL:(NSURL *)url];
1.2和1.3的方法是缺点是没办法知道response的status,一般是返回200-299之间的数值代表请求成功.我们可以依照这个code来做数据处理, 如果对地址存在很有把握,就可以使用后两种简单的GET方法.
今天查了一下手册,发现NSArray NSDictionary 也有xxxxWithContentsOfURL的方法, 这两个我还没用过, 应该是跟NSData和NSString一样,但具体怎么用我还不清楚.
2.Post方法
2.1 使用NSMutableURLRequest
- NSURL* url = [NSURL URLWithString:@"http://aminby.net"];
- NSMutableURLRequest* request = [NSMutableURLRequest new];
- [request setURL:url];
- [request setHTTPMethod:@"GET"];
- [request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
- [request setHTTPBody:@"some param"];
- NSHTTPURLRequest* response;
- NSData* data = [NSURLConnection sendSynchronousRequest:request
- returningResponse:&response error:nil];
- [NSString* strRet = [[NSString alloc] initWithData:data encoding:NSUTF8String];
- NSLog(strRet);
- [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();
}
http://blog.csdn.net/ipromiseu/article/details/6595367
http://blog.csdn.net/ipromiseu/article/details/6595337