ios开发小技巧总结(一)

1.设置标签的文字显示不同颜色。

NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"测试的数据"];

[str addAttribute:NSForegroundColorAttributeName value:BGColor range:NSMakeRange(5,5)];
_noteTextField.attributedText = str;

2.定时器的取消,关闭,重启
(1).设置定时器。

 _timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(refreshTime) userInfo:nil repeats:YES];

(2).定时器关闭

 [_timer setFireDate:[NSDate distantFuture]];//关闭定时器

(3),定时器重启

[_timer setFireDate:[NSDate distantPast]];

(4).定时器取消


[_timer invalidate];
_timer = nil;

3.在UItabbarViewController作为根视图情况下,在子视图中获取UITabbarViewController.


MainTabBarViewController *manTabar= (MainTabBarViewController *)[UIApplication
sharedApplication].keyWindow.rootViewController;

4.在字符串中添加换行,添加 \n

NSString *message = [NSString stringWithFormat:@"Auto connect upon\n%@(%@)'s request",settings.connectionInfo.displayName,settings.connectionInfo.hostName];
  1. 在非ARC的项目中使用ARC文件,对ARC的文件添加 -fobjc-arc 标签
    在ARC的项目中使用非ARC文件,对非ARC文件添加 -fno-objc-arc 标签

6
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait modes:(NSArray *)array;
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;


参考:
本方法使用Common模式将消息加入到主线程运行循环(run loop)队列, 即 与NSRunLoopCommonModes常数相关的模式。作为其正常运行循环处理的一部分,主线程从队列中取出消息(假设它是在Common模式中运行)并调用所需的方法。在同一个线程多次调用此方法会导致相应的选择进行排队,再按相同的顺序取出执行。

在主线程中调用. BOOL值,表示是否阻塞当前线程.NO表示立刻返回,按照默认的Common模式 加入队列中等待调用.
如果当前线程也是主线程,选择YES,消息会立即派发,处理。在主线程的Loop中 同步操作,等待改方法完成再执行下一个消息.
参考:http://www.jianshu.com/p/083726e68c2b

7 . IOS拍照控件同时显示拍照与录像

- (void) recordVideo: (id) sender{
UIImagePickerController *ipc = [[UIImagePickerController alloc] init];
ipc.sourceType = UIImagePickerControllerSourceTypeCamera;
ipc.delegate = self;
ipc.allowsEditing = YES;
ipc.videoQuality = UIImagePickerControllerQualityTypeMedium;
ipc.videoMaximumDuration = 30.0f; // 30 seconds
///ipc.mediaTypes = [NSArray arrayWithObject:@"public.movie"];
//主要是下边的两能数,@"public.movie", @"public.image" 一个是录像,一个是拍照
ipc.mediaTypes = [NSArray arrayWithObjects:@"public.movie", @"public.image", nil];
[self presentModalViewController:ipc animated:YES];
}

8.objective-c下如果某属性的getter,setter都要重写的话
需要加上

@synthesize propertyName = _propertyName;

9.NSURLRquest 缓存策略

1.   NSURLRequestUseProtocolCachePolicy = 0, 

默认的缓存策略, 如果缓存不存在,直接从服务端获取。如果缓存存在,会根据response中的Cache-Control字段判断下一步操作,如: Cache-Control字段为must-revalidata, 则询问服务端该数据是否有更新,无更新的话直接返回给用户缓存数据,若已更新,则请求服务端.

2. NSURLRequestReloadIgnoringLocalCacheData = 1,

忽略本地缓存数据,直接请求服务端.

3.NSURLRequestIgnoringLocalAndRemoteCacheData = 4, 

忽略本地缓存,代理服务器以及其他中介,直接请求源服务端.

 4.NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData

两个一致

5.NSURLRequestReturnCacheDataElseLoad= 2, 

有缓存就使用,不管其有效性(即忽略Cache-Control字段), 无则请求服务端.

6. NSURLRequestReturnCacheDataDontLoad =3, 

死活加载本地缓存. 没有就失败.(确定当前无网络时使用)

7.NSURLRequestReloadRevalidatingCacheData =5,

缓存数据必须得得到服务端确认有效才使用(貌似是NSURLRequestUseProtocolCachePolicy中的一种情况)

10.**删除隐藏的.svn文件,命令行运行 **
第一条命令:
defaults write com.apple.finder AppleShowAllFiles TRUE;
第二条命令
killall Finder;
ko,隐藏的.svn文件夹就原形毕露了.
开启显示隐藏文件,然后到工程目录下删除.svn文件,然后再恢复
defaults write com.apple.finder AppleShowAllFiles FALSE;
killall Finder;

11.设置UITextField 的缩进效果.

   UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 5)];
_phoneTextField.leftView = view;
_phoneTextField.leftViewMode = UITextFieldViewModeAlways;

12.快速设置阴影的方法
_shadeView.layer.shadowOpacity = 0.8;

需要了解:
1.shadowOpacity 默认值是0 shadowColor默认值是Black
shadowOffset的默认值是 {0, -3},意即阴影相对于Y轴有3个点的向上位移。
shadowRadius属性控制着阴影的模糊度 ,也可以理解为阴影的半径,值越大,阴影的范围和模糊度越深.

2.深度学习,永阴影图片做动画的时候,应选择另一种方法CGPath
http://blog.csdn.net/dean19900504/article/details/9233879

你可能感兴趣的:(ios开发小技巧总结(一))