IOS的一些小知识

IOS的一些小知识

转载:http://www.2cto.com/kf/201302/188365.html

1.停止UIView动画的方法:

#import<QuartzCore/QuartzCore.h>
    
 [self.view.layer removeAllAnimations];
2.block页面传值方法:
3.UITableViewCell中cell坐标转换
cell相对self.view的定位:
CGRect rect=[self.view convertRect:cell.frame fromView:tableView];
找到cell的相对位置后cell上button获取其他控件的相对位置都可以找出来
4.按文件创建时间排序
    NSLog(@"cheng %@", cheng);
    NSSortDescriptor*sorter=[[NSSortDescriptor alloc]initWithKey:@"createDate" ascending:NO];//降序
    NSMutableArray *sortDescriptors=[[NSMutableArray alloc]initWithObjects:&sorter count:1];
    NSArray *sortArray=[cheng sortedArrayUsingDescriptors:sortDescriptors];
    [sorter release];
    NSLog(@"then %@", sortArray);
5.IOS去文件后缀名
第一种方法:
    NSArray *result = [fileName componentsSeparatedByString:@"."];
    if(result.count != 2){
        return ;
    } 
    NSString *fileTitle = [result objectAtIndex:0];
    NSString *fileType = [result objectAtIndex:1];
第二种方法:
   NSString * fileName;//文件名
   NSRange range = [sourceFile rangeOfString:@"." options:NSBackwardsSearch];
   if (range.length>0)
       fileName=[data.m_strTitle substringToIndex:NSMaxRange(range)];
    第二种能够排除文件名字中带有.的情况
6.UIWebView 隐藏拖拽时上下阴影
//隐藏阴影
    for (UIView *subView in [m_webView subviews]) 
    { 
        if ([subView isKindOfClass:[UIScrollView class]]) 
        { 
            for (UIView *shadowView in [subView subviews]) 
            { 
                if ([shadowView isKindOfClass:[UIImageView class]]) 
                { shadowView.hidden = YES; 
                } 
            } 
        }
    }
7.通过tag取cell上的控件
    [cell.contentView viewWithTag:tag];
 
8.NSString 编码UTF8
//NSString 编码,解决url中空格和汉字
NSString * urlString= (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)urlStr, nil, nil,kCFStringEncodingUTF8);
 
9.iOS 获取本地视频的缩略图
+(UIImage *)getImage:(NSString *)videoURL
{
    AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:[NSURL fileURLWithPath:videoURL] options:nil];
    AVAssetImageGenerator *gen = [[AVAssetImageGenerator alloc] initWithAsset:asset];
    gen.appliesPreferredTrackTransform = YES;
    CMTime time = CMTimeMakeWithSeconds(0.0, 600);
    NSError *error = nil;
    CMTime actualTime;    
    CGImageRef image = [gen copyCGImageAtTime:time actualTime:&actualTime error:&error];
    UIImage *thumb = [[UIImage alloc] initWithCGImage:image];
    CGImageRelease(image);
    return thumb;
 
}
需要添加AVFoundation和CoreMedia.framework
 
10.验证图片有效性
- (BOOL)isJPEGValid:(NSData *)jpeg {
    if ([jpeg length] < 4) return NO;
    const char * bytes = (const char *)[jpeg bytes];
    if (bytes[0] != 0xFF || bytes[1] != 0xD8) return NO;
    if (bytes[[jpeg length] - 2] != 0xFF || bytes[[jpeg length] - 1] != 0xD9) return NO;
    return YES;
}
 
11.UIButton标题对齐方式
    m_btnCode.titleLabel.textAlignment=UITextAlignmentLeft;//没用
    需要使用
    [m_btnCode setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
12.ios 图片保存到相册
UIImageWriteToSavedPhotosAlbum是UIKit框架中的一个函数。
这里说一下后面三个参数的含义:
void UIImageWriteToSavedPhotosAlbum (
   UIImage  *image,
   id       completionTarget,
   SEL      completionSelector,
   void     *contextInfo
);
 
id是target对象,sel是selector,即target对象上的方法名,contextInfo是任意指针,会传递到selector定义的方法上。一般是当完成后调用方法时使用,或者在完成时出错的处理。
 
使用的时候:
 
UIImageWriteToSavedPhotosAlbum(m_currentImage.image, nil, nil, nil);//然后在相册中就能找到你添加的图片
 
13.ios 打开照片库,打开相机
//打开照片库
        UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
        imagePicker.delegate = self;
        //imagePicker.allowsImageEditing = YES;    //图片可以编辑
        //需要添加委托
        [self presentModalViewController:imagePicker animated:YES];
        [imagePicker release];
 
//打开相机
if([UIImagePickerControlle isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]){
            UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
            imagePicker.delegate = self;
            //imagePicker.allowsImageEditing = YES;
            imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
            [self presentModalViewController:imagePicker animated:YES];
            [imagePicker release];
        }
13.CGRectOffset 的作用
相对于源矩形原点(左上角的点)沿x轴和y轴偏移 ,例如:
[self.view setFrame:CGRectOffset(self.view.frame, 260, 0)];
view沿着(0,0)x轴向右移动260个像素
 
14.数组深拷贝
NSMutableArray *arr1=[[NSMutableArray alloc] initWithObjects:@"a", @"b", @"c", nil];
    NSMutableArray *arr2=[[NSMutableArray alloc] init];
    arr2=[arr1 mutableCopy];
    [arr1 removeObject:@"b"];
//结果arr1:a,c 
//arr2:a,b,c
 
15.UITableViewCell 重用
解决在cell中添加其他控件时,滚动后重复加载,文字重影,控件错乱的情况
NSString *CellIdentifier = [NSString stringWithFormat:@"Cell%d%d", [indexPath section], [indexPath row]];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
//添加代码
    }
16.UITextView根据文本修改高度
首先根据文本计算高度:
UIFont *font = [UIFont systemFontOfSize:14.0];
    CGSize size = [m_textView.text sizeWithFont:font constrainedToSize:CGSizeMake(240,9999) lineBreakMode:UILineBreakModeWordWrap];
//constrainedToSize的两个参数没搞明白,可能第一个参数是textView的宽度,第二个参数还没搞懂
然后修改textView的高度
 
[m_textView setFrame:CGRectMake(52, 104, 240, size.height+30)];
 
17.viewDidLoad在view 从nib文件初始化时调用,loadView在controller的view为nil时调用。此方法在编程实现view时调用,view 控制器默认会注册memory warning notification,当view controller的任何view 没有用的时候,viewDidUnload会被调用,在这里实现将retain 的view release,如果是retain的IBOutlet view 属性则不要在这里release,IBOutlet会负责release 。
18.delegate和Notification的区别
delegate针对one-to-one关系,并且reciever可以返回值给sender;
notification 可以针对one-to-one/many/none,reciever无法返回值给sender;
所以,delegate用于sender希望接受到reciever的某个功能反馈值,notification用于通知多个object某个事件。
19.
用变量a给出下面的定义
a) 一个整型数(An integer)
b) 一个指向整型数的指针(A pointer to an integer)
c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer)
d) 一个有10个整型数的数组(An array of 10 integers)
e) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers)
f) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers)
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)
h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer
argument and return an integer )
(1) int a; // An integer
(2) int *a; // A pointer to an integer
(3) int **a; // A pointer to a pointer to an integer
(4) int a[10]; // An array of 10 integers
(5) int *a[10]; // An array of 10 pointers to integers
(6) int (*a)[10]; // A pointer to an array of 10 integers
(7) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integer
(8) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer
 
20.NSURL转化NSString 、NSMutableArray转化NSArray
NSURL转化NSString
NSURL *url=····
NSString *str=[url absoluteString];
 
NSMutableArray转化NSArray:
NSMutableArray *list=····
NSArray *list=[list mutableCopy]
;

posted on 2013-04-26 14:17  songbai  阅读(209)  评论(0编辑  收藏  举报