今年刚刚换了工作,整理一下用到的小知识点,做个笔记,也方便有需要的的小伙伴们,如有错误,请指正,谢谢!
目前的积累还是比较少的,会随时添加的。
手势相关
1、允许多个手势并发
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return YES;
}
2、子视图屏蔽父视图手势
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([touch.view isDescendantOfView:所需要屏蔽的子视图]) {
return NO;
}
return YES;
}
tabbar相关
1、最近项目需求,底部tabbar的背景图片不规则,两个tabbaritem平均分的位置有点偏差,需要移动tabbaritem的位置(系统的tabbar)
UINavigationController * na1 = (UINavigationController*)self.childViewControllers[1];
[na1.tabBarItem setTitlePositionAdjustment:UIOffsetMake(2, 0)];
导航栏相关
1、导航栏与状态栏
1)ios 7 之后,setTranslucent=yes 默认的 则状态栏及导航栏底部为透明的,界面上的组件应该从屏幕顶部开始显示,因为是半透明的,可以看到,所以为了不和状态栏及导航栏重叠,第一个组件的y应该从44+20的位置算起
如果设置成no,则状态栏及导航样不为透明的,界面上的组件就是紧挨着导航栏显示了,所以就不需要让第一个组件在y方向偏离44+20的高度了。
2)设置导航栏图片。Gloabl Tint 默认颜色,更换图片时,添加[image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal],显示图片原本颜色
3)导航控制器可以赋给其他导航控制器
音视频处理
1、获取视频第一帧
/**
* 获取视频第一帧
*
* @return
*/
-(UIImage *)thumbnailImageForVideo:(NSURL *)videoURL atTime:(NSTimeInterval)time {
AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:videoURL options:nil];
NSParameterAssert(asset);
AVAssetImageGenerator *assetImageGenerator =[[AVAssetImageGenerator alloc] initWithAsset:asset];
assetImageGenerator.appliesPreferredTrackTransform = YES;
assetImageGenerator.apertureMode =AVAssetImageGeneratorApertureModeEncodedPixels;
CGImageRef thumbnailImageRef = NULL;
CFTimeInterval thumbnailImageTime = time;
NSError *thumbnailImageGenerationError = nil;
thumbnailImageRef = [assetImageGenerator copyCGImageAtTime:CMTimeMake(thumbnailImageTime, 60)actualTime:NULL error:&thumbnailImageGenerationError];
if(!thumbnailImageRef)
NSLog(@"thumbnailImageGenerationError %@",thumbnailImageGenerationError);
UIImage*thumbnailImage = thumbnailImageRef ? [[UIImage alloc]initWithCGImage:thumbnailImageRef] : nil;
return thumbnailImage;
}
设置控件全局显示样式appearance proxy
appearance是apple在iOS5.0上加的一个协议,它让程序员可以很轻松地改变某控件的全局样式(背景)
支持UIAppearance协议的类可以访问appearance selector ,它为receiver返回appearance proxy,可以给proxy发一些消息,像setTintColor:等
但是有一点,就是支持的类有限,支持的类有:
1.UIActivitiIndicatorView
2.UIBarButtonItem
3.UIBarItem
4.UINavgationBar
5.UIPopoverControll
6.UIProgressView
7.UISearchBar
8.UISegmentControll
9.UISlider
10.UISwitch
11.UITabBar
12.UITabBarItem
13.UIToolBar
14.UIView
15.UIViewController
例:
[[UINavigationBar appearance] setTintColor:[UIColor blackColor]];
[[UIView appearance] setTintColor:[UIColor blackColor]];