小知识

深碍√TFBOYSˉ_ 2022-08-21 03:10 356阅读 0赞

1.停止UIView动画的方法:

#import

[self.view.layer removeAllAnimations];

2.block页面传值方法:

20130206100325155.png

3.UITableViewCell中cell坐标转换

cell相对self.view的定位:

CGRect rect=[self.view convertRect:cell.frame fromView:tableView];

找到cell的相对位置后cell上button获取其他控件的相对位置都可以找出来

4.按文件创建时间排序

  1. NSLog(@"cheng %@", cheng);
  2. NSSortDescriptor\*sorter=\[\[NSSortDescriptor alloc\]initWithKey:@"createDate" ascending:NO\];//降序
  3. NSMutableArray \*sortDescriptors=\[\[NSMutableArray alloc\]initWithObjects:&sorter count:1\];
  4. NSArray \*sortArray=\[cheng sortedArrayUsingDescriptors:sortDescriptors\];
  5. \[sorter release\];
  6. NSLog(@"then %@", sortArray);

5.IOS去文件后缀名

第一种方法:

  1. NSArray \*result = \[fileName componentsSeparatedByString:@"."\];
  2. if(result.count != 2)\{
  3. return ;
  4. \}
  5. NSString \*fileTitle = \[result objectAtIndex:0\];
  6. NSString \*fileType = \[result objectAtIndex:1\];

第二种方法:

NSString * fileName;//文件名

NSRange range = [sourceFile rangeOfString:@”.” options:NSBackwardsSearch];

if (range.length>0)

  1. fileName=\[data.m\_strTitle substringToIndex:NSMaxRange(range)\];
  2. 第二种能够排除文件名字中带有.的情况

6.UIWebView 隐藏拖拽时上下阴影

//隐藏阴影

  1. for (UIView \*subView in \[m\_webView subviews\])
  2. \{
  3. if (\[subView isKindOfClass:\[UIScrollView class\]\])
  4. \{
  5. for (UIView \*shadowView in \[subView subviews\])
  6. \{
  7. if (\[shadowView isKindOfClass:\[UIImageView class\]\])
  8. \{ shadowView.hidden = YES;
  9. \}
  10. \}
  11. \}
  12. \}

7.通过tag取cell上的控件

  1. \[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

{

  1. AVURLAsset \*asset = \[\[AVURLAsset alloc\] initWithURL:\[NSURL fileURLWithPath:videoURL\] options:nil\];
  2. AVAssetImageGenerator \*gen = \[\[AVAssetImageGenerator alloc\] initWithAsset:asset\];
  3. gen.appliesPreferredTrackTransform = YES;
  4. CMTime time = CMTimeMakeWithSeconds(0.0, 600);
  5. NSError \*error = nil;
  6. CMTime actualTime;
  7. CGImageRef image = \[gen copyCGImageAtTime:time actualTime:&actualTime error:&error\];
  8. UIImage \*thumb = \[\[UIImage alloc\] initWithCGImage:image\];
  9. CGImageRelease(image);
  10. return thumb;

}

需要添加AVFoundation和CoreMedia.framework

10.验证图片有效性

- (BOOL)isJPEGValid:(NSData *)jpeg {

  1. if (\[jpeg length\] < 4) return NO;
  2. const char \* bytes = (const char \*)\[jpeg bytes\];
  3. if (bytes\[0\] != 0xFF || bytes\[1\] != 0xD8) return NO;
  4. if (bytes\[\[jpeg length\] - 2\] != 0xFF || bytes\[\[jpeg length\] - 1\] != 0xD9) return NO;
  5. return YES;

}

11.UIButton标题对齐方式

  1. m\_btnCode.titleLabel.textAlignment=UITextAlignmentLeft;//没用
  2. 需要使用
  3. \[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 打开照片库,打开相机

//打开照片库

  1. UIImagePickerController \*imagePicker = \[\[UIImagePickerController alloc\] init\];
  2. imagePicker.delegate = self;
  3. //imagePicker.allowsImageEditing = YES; //图片可以编辑
  4. //需要添加委托
  5. \[self presentModalViewController:imagePicker animated:YES\];
  6. \[imagePicker release\];

//打开相机

if([UIImagePickerControlle isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]){

  1. UIImagePickerController \*imagePicker = \[\[UIImagePickerController alloc\] init\];
  2. imagePicker.delegate = self;
  3. //imagePicker.allowsImageEditing = YES;
  4. imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
  5. \[self presentModalViewController:imagePicker animated:YES\];
  6. \[imagePicker release\];
  7. \}

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];

  1. NSMutableArray \*arr2=\[\[NSMutableArray alloc\] init\];
  2. arr2=\[arr1 mutableCopy\];
  3. \[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];

  1. if (cell == nil) \{
  2. cell = \[\[\[UITableViewCell alloc\] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier\] autorelease\];

//添加代码

  1. \}

16.UITextView根据文本修改高度

首先根据文本计算高度:

UIFont *font = [UIFont systemFontOfSize:14.0];

  1. 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];

发表评论

表情:
评论列表 (有 0 条评论,356人围观)

还没有评论,来说两句吧...

相关阅读

    相关 融资知识

    流程 第一轮融资(种子轮或天使轮) 1. 准备融资商业计划书 2. 寻找和接洽投资人 \++++通过自我推荐或通过熟人介绍等不同渠道,将能够获得投资人的

    相关 知识

    进制转换: 二进制转八进制: 从小数点开始向左为整数部分,向右为小数部分 “三位一体” ,不足补0 例如:10001001. 1011 划分完:010  001  0

    相关 实用知识

    一、苹果电脑   1. 无法正常开关机:     首先尝试: shift + control + option + 开机键 重置 SMC,按住4、5秒松手后等待30秒以上再

    相关 vuex知识

    Vuex 是一个专为 Vue.js 设计的状态管理模式 vuex解决了组件之间同一状态的共享问题。当我们的应用遇到多个组件共享状态时,会需要: 多个组件依赖于同一状态。传参