- 问题
不是所有的拍照UIImagePickerController都能搞定,理由如下:
1.产品不整点幺蛾子,哪来体验翻新
2.设计不整点幺蛾子,怎能体现用心
3.经营:这体验跟某宝某信咋不一样???
4.开发:我是被逼成大佬的!!!1.2.3.层层施压,大厂能搞得,你咋搞不了
- 思路:
定制相机,绕不开的问题:UIImagePickerController中那块实时场景怎么搞?
计划上个别是采纳AVCaptureSession + AVCaptureVideoPreviewLayer
AVCaptureVideoPreviewLayer继承CALayer, 设置bounds、frame, 可满足简略需要
But, 横竖屏切换、iPhone与iPad共用、视图成果调整【毕竟下面的1.2.话语权广泛大过开发】等此类情况下,frame的形式哪有束缚来的切实
每个view都有一个layer属性,定制view的layer为AVCaptureVideoPreviewLayer, view束缚调整扭转frame即可
上菜
定义一个view
@interface AVPreView : UIView@end
设置layerClass
+ (Class)layerClass { return [AVCaptureVideoPreviewLayer class];}
为了实时场景,layer即AVCaptureVideoPreviewLayer 是须要设置一个session的
// 设置属性@property (nonatomic, strong) AVCaptureSession *session;// Getter & Setter- (AVCaptureSession *)session { return [(AVCaptureVideoPreviewLayer *)self.layer session];}- (void)setSession:(AVCaptureSession *)session { [(AVCaptureVideoPreviewLayer *)self.layer setSession:session];}
须要设置聚焦之类的,此时须要对view上触碰的点转换成摄像头的地位
-(CGPoint)captureDevicePointForPoint:(CGPoint)point{ AVCaptureVideoPreviewLayer *layer = (AVCaptureVideoPreviewLayer *)self.layer; //将屏幕上点击的地位转化成摄像头的地位 return [layer captureDevicePointOfInterestForPoint:point];}
- Game Over. Code不行,多敲敲。