设为首页 加入收藏

TOP

机试题:地图定位、拍照并显示、录制视频并播放(一)
2017-10-13 10:33:06 】 浏览:2647
Tags:试题 地图 定位 拍照 显示 录制 视频 播放

  这两天参加面试,有个公司先出了机试题,然后才能进入下一步,机试题大意是要求实现:地图定位、拍照并显示照片、录制视频并且播放视频三个小功能。

先上我的效果图:

  

 

1、地图定位关键代码(ios8后,开启地图定位需要在工程文件里面设置描述):

//1、添加地图视图
    CGRect rect = [UIScreen mainScreen].bounds;
    _mapView = [[MKMapView alloc]initWithFrame:CGRectMake(0, 50, rect.size.width, rect.size.height - 50)];
    [self.view addSubview:_mapView];
    //设置代理
    _mapView.delegate = self;
    
    //2、请求定位服务
    _locationManager = [[CLLocationManager alloc]init];
    if(![CLLocationManager locationServicesEnabled]||[CLLocationManager authorizationStatus]!=kCLAuthorizationStatusAuthorizedWhenInUse){
        [_locationManager requestWhenInUseAuthorization];
    }
    
    //3、用户位置追踪
    _mapView.userTrackingMode = MKUserTrackingModeFollow;
    
    //4、设置地图类型
    _mapView.mapType = MKMapTypeStandard;
View Code

 

2、拍照和录制视频关键代码: 

#import "ViewController.h"
#import <MobileCoreServices/MobileCoreServices.h>
#import <MediaPlayer/MediaPlayer.h>

@interface ViewController () <UINavigationControllerDelegate, UIImagePickerControllerDelegate>

@property (weak, nonatomic) IBOutlet UIImageView *imgView; //显示拍照的照片

@property (strong, nonatomic) UIImagePickerController *picker;
@property (assign, nonatomic) BOOL isChange; //是否切换拍照和录制视频
@property (assign, nonatomic) NSInteger currentTag; //当前tag

@property (nonatomic, strong) MPMoviePlayerController *moviePlayer;//视频播放控制器
@property (nonatomic, strong) NSURL *movieUrl; //视频录制路径
@property (nonatomic, strong) UIView *movieView; //播放器的View

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

//初始化picker
- (UIImagePickerController *)picker{
    if (_isChange || _picker == nil){
        _picker = [[UIImagePickerController alloc]init];
        _picker.sourceType = UIImagePickerControllerSourceTypeCamera;//设置image picker的来源
        _picker.cameraDevice = UIImagePickerControllerCameraDeviceRear;//设置使用哪个摄像头,这里设置为后置摄像头
        
        if (self.currentTag == 1) { //录制视频
            _picker.mediaTypes = @[(NSString *)kUTTypeMovie];
            _picker.videoQuality = UIImagePickerControllerQualityTypeIFrame1280x720;
            _picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModeVideo;//设置摄像头模式(拍照,录制视频)
            //NSLog(@"录制视频");
        }
        else{ //拍照
            _picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
            //移除视频播放器控件
            if (self.moviePlayer != nil){
                [self.movieView removeFromSuperview];
                self.moviePlayer = nil;
            }
        }
        _picker.allowsEditing=YES;//允许编辑
        _picker.delegate=self;//设置代理,检测操作
    }
    return _picker;
}

//视频播放器
-(MPMoviePlayerController *)moviePlayer{
    if (!_moviePlayer) {
        _moviePlayer = [MPMoviePlayerController new];
        _moviePlayer.view.frame = self.imgView.frame;
        _moviePlayer.view.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
        self.movieView = _moviePlayer.view;
        [self.view addSubview:self.movieView];
    }
    _moviePlayer.contentURL = self.movieUrl;
    
    return _moviePlayer;
}

//拍照和视频录制: tag = 0表示拍照,= 1表示录制视频
- (IBAction)openVideo:(UIButton *)sender {
    
    if (self.currentTag != sender.tag) self.isChange = YES;
    
    self.currentTag = sender.tag;
    
    [self presentViewControll
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇iOS面试题总结 (三) 下一篇面向对象(OOP)和面向过程(POP)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目