├── movie.gif ├── KNStartMovie ├── movie.mp4 ├── ViewController.h ├── AppDelegate.h ├── main.m ├── KNMovieView │ ├── KNMovieViewController.h │ └── KNMovieViewController.m ├── ViewController.m ├── Info.plist ├── Base.lproj │ ├── Main.storyboard │ └── LaunchScreen.storyboard ├── Assets.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json └── AppDelegate.m ├── KNStartMovie.xcodeproj ├── xcuserdata │ └── liufan.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── project.pbxproj └── README.md /movie.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krystalName/StartMovie/HEAD/movie.gif -------------------------------------------------------------------------------- /KNStartMovie/movie.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krystalName/StartMovie/HEAD/KNStartMovie/movie.mp4 -------------------------------------------------------------------------------- /KNStartMovie.xcodeproj/xcuserdata/liufan.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /KNStartMovie.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /KNStartMovie/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // KNStartMovie 4 | // 5 | // Created by 刘凡 on 2017/10/9. 6 | // Copyright © 2017年 KrystalName. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /KNStartMovie.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /KNStartMovie/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // KNStartMovie 4 | // 5 | // Created by 刘凡 on 2017/10/9. 6 | // Copyright © 2017年 KrystalName. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /KNStartMovie/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // KNStartMovie 4 | // 5 | // Created by 刘凡 on 2017/10/9. 6 | // Copyright © 2017年 KrystalName. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /KNStartMovie/KNMovieView/KNMovieViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // KNMovieViewController.h 3 | // KNStartMovie 4 | // 5 | // Created by 刘凡 on 2017/10/9. 6 | // Copyright © 2017年 KrystalName. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | 13 | @interface KNMovieViewController : UIViewController 14 | 15 | 16 | @property(nonatomic, strong)NSURL *movieURL; 17 | 18 | 19 | @property(nonatomic, strong)UIViewController *VC; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /KNStartMovie.xcodeproj/xcuserdata/liufan.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | KNStartMovie.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /KNStartMovie/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // KNStartMovie 4 | // 5 | // Created by 刘凡 on 2017/10/9. 6 | // Copyright © 2017年 KrystalName. All rights reserved. 7 | // 8 | 9 | #import "ViewController.h" 10 | 11 | @interface ViewController () 12 | 13 | @end 14 | 15 | @implementation ViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | [self.view setBackgroundColor:[UIColor whiteColor]]; 20 | // Do any additional setup after loading the view, typically from a nib. 21 | } 22 | 23 | 24 | - (void)didReceiveMemoryWarning { 25 | [super didReceiveMemoryWarning]; 26 | // Dispose of any resources that can be recreated. 27 | } 28 | 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /KNStartMovie/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /KNStartMovie/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /KNStartMovie/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /KNStartMovie/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "size" : "1024x1024", 91 | "scale" : "1x" 92 | } 93 | ], 94 | "info" : { 95 | "version" : 1, 96 | "author" : "xcode" 97 | } 98 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # KNStartMovie    辛辛苦苦点进来。 ~ 那就给个星星吧~ 2 | 3 | ###  先上效果图 4 | 5 | ![](https://github.com/krystalName/StartMovie/blob/master/movie.gif) 6 | 7 | ## 你可以使用pod导入本组件 8 | 9 | ```ruby 10 | pod 'KNStartMovie' 11 | ``` 12 | 13 | ## 跟着时代的变化。 很多app的启动页面会选择用一段视频去代替传统的滑动启动。 所以我就写了一个demo 实现了拿本地视频作为启示页面 14 | 15 | 1.也可以做拿网络视频作为启动视频。(需要自己做) 16 | 17 | 2.首先你本地肯定是要有一个视频的。 不可以直接去获取网络视频。 否则会造成网络慢而没有视频的后果 18 | 19 | ### 核心代码如下 20 | ``` objc 21 | //播放器ViewController 22 | @property(nonatomic, strong)AVPlayerViewController *AVPlayer; 23 | 24 | -(void)setMoviePlayer{ 25 | //初始化AVPlayer 26 | self.AVPlayer = [[AVPlayerViewController alloc]init]; 27 | //多分屏功能取消 28 | self.AVPlayer.allowsPictureInPicturePlayback = NO; 29 | //设置是否显示媒体播放组件 30 | self.AVPlayer.showsPlaybackControls = false; 31 | 32 | //初始化一个播放单位。给AVplayer 使用 33 | AVPlayerItem *item = [[AVPlayerItem alloc]initWithURL:_movieURL]; 34 | 35 | AVPlayer *player = [AVPlayer playerWithPlayerItem:item]; 36 | 37 | //layer 38 | AVPlayerLayer *layer = [AVPlayerLayer playerLayerWithPlayer:player]; 39 | [layer setFrame:[UIScreen mainScreen].bounds]; 40 | //设置填充模式 41 | layer.videoGravity = AVLayerVideoGravityResizeAspect; 42 | 43 | 44 | //设置AVPlayerViewController内部的AVPlayer为刚创建的AVPlayer 45 | self.AVPlayer.player = player; 46 | //添加到self.view上面去 47 | [self.view.layer addSublayer:layer]; 48 | //开始播放 49 | [self.AVPlayer.player play]; 50 | 51 | //这里设置的是重复播放。 52 | [[NSNotificationCenter defaultCenter] addObserver:self 53 | selector:@selector(playDidEnd:) 54 | name:AVPlayerItemDidPlayToEndTimeNotification 55 | object:item]; 56 | 57 | 58 | } 59 | ``` 60 | 61 | ## 因为考虑到视频播放完也不能卡住。 所以做了一个重复播放的动作 62 | 63 | ``` objc 64 | //播放完成的代理 65 | - (void)playDidEnd:(NSNotification *)Notification{ 66 | //播放完成后。设置播放进度为0 。 重新播放 67 | [self.AVPlayer.player seekToTime:CMTimeMake(0, 1)]; 68 | //开始播放 69 | [self.AVPlayer.player play]; 70 | } 71 | 72 | ``` 73 | 74 | ## 然后做了一个定时器。3秒钟之后出现进入应用的按钮 75 | ``` objc 76 | //定时器。延迟3秒再出现进入应用按钮 77 | [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(setupLoginView) userInfo:nil repeats:YES]; 78 | ``` 79 | -------------------------------------------------------------------------------- /KNStartMovie/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // KNStartMovie 4 | // 5 | // Created by 刘凡 on 2017/10/9. 6 | // Copyright © 2017年 KrystalName. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | #import "KNMovieViewController.h" 11 | #import "ViewController.h" 12 | 13 | @interface AppDelegate () 14 | 15 | @end 16 | 17 | @implementation AppDelegate 18 | 19 | 20 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 21 | 22 | 23 | //刚开始肯定是NO. 因为没有保存过YES 放到userDefaults 里面. 24 | // BOOL isFirstUp = [[NSUserDefaults standardUserDefaults] objectForKey:@"FirstLoad"]; 25 | 26 | //首先说明一下。 我这里是随便写的一个判断首次进入。下面说明正确写法 27 | //1.首先要从服务器获取到版本号 28 | //2.然后获取到Xcode设置版本号,把本地版本号上传到服务器。以方便下次比较 29 | //3.开始比较。版本号不同就设置启动页面。 这个看具体需求。因为有些app升级之后是不会出现启动页面的。 30 | //那是因为别人不需要每次升级都出现引导页。 31 | 32 | if (YES) //如果本地缓存的数值是YES 就代表保存过 33 | { 34 | //存到本地UserDefaults 里面 35 | [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"FirstLoad"]; 36 | 37 | //然后再跳转到播放视频的画面 38 | KNMovieViewController *KNVC = [[KNMovieViewController alloc]init]; 39 | // 1、获取媒体资源地址 40 | NSString *path = [[NSBundle mainBundle] pathForResource:@"movie.mp4" ofType:nil]; 41 | KNVC.movieURL = [NSURL fileURLWithPath:path]; 42 | self.window.rootViewController = KNVC; 43 | }else{ 44 | //不是首次启动 45 | ViewController *rootTabCtrl = [[ViewController alloc]init]; 46 | self.window.rootViewController = rootTabCtrl; 47 | } 48 | 49 | return YES; 50 | } 51 | 52 | 53 | - (void)applicationWillResignActive:(UIApplication *)application { 54 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 55 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 56 | } 57 | 58 | 59 | - (void)applicationDidEnterBackground:(UIApplication *)application { 60 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 61 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 62 | } 63 | 64 | 65 | - (void)applicationWillEnterForeground:(UIApplication *)application { 66 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 67 | } 68 | 69 | 70 | - (void)applicationDidBecomeActive:(UIApplication *)application { 71 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 72 | } 73 | 74 | 75 | - (void)applicationWillTerminate:(UIApplication *)application { 76 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 77 | } 78 | 79 | 80 | @end 81 | -------------------------------------------------------------------------------- /KNStartMovie/KNMovieView/KNMovieViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // KNMovieViewController.m 3 | // KNStartMovie 4 | // 5 | // Created by 刘凡 on 2017/10/9. 6 | // Copyright © 2017年 KrystalName. All rights reserved. 7 | // 8 | 9 | #import "KNMovieViewController.h" 10 | #import 11 | #import 12 | 13 | 14 | 15 | @interface KNMovieViewController () 16 | 17 | 18 | //播放器ViewController 19 | @property(nonatomic, strong)AVPlayerViewController *AVPlayer; 20 | 21 | @end 22 | 23 | @implementation KNMovieViewController 24 | 25 | - (void)viewDidLoad { 26 | [super viewDidLoad]; 27 | self.view.backgroundColor = [UIColor whiteColor]; 28 | 29 | //初始化AVPlayer 30 | [self setMoviePlayer]; 31 | } 32 | 33 | -(void)setMoviePlayer{ 34 | 35 | //初始化AVPlayer 36 | self.AVPlayer = [[AVPlayerViewController alloc]init]; 37 | //多分屏功能取消 38 | self.AVPlayer.allowsPictureInPicturePlayback = NO; 39 | //设置是否显示媒体播放组件 40 | self.AVPlayer.showsPlaybackControls = false; 41 | 42 | //初始化一个播放单位。给AVplayer 使用 43 | AVPlayerItem *item = [[AVPlayerItem alloc]initWithURL:_movieURL]; 44 | 45 | AVPlayer *player = [AVPlayer playerWithPlayerItem:item]; 46 | 47 | //layer 48 | AVPlayerLayer *layer = [AVPlayerLayer playerLayerWithPlayer:player]; 49 | [layer setFrame:[UIScreen mainScreen].bounds]; 50 | //设置填充模式 51 | layer.videoGravity = AVLayerVideoGravityResizeAspect; 52 | 53 | 54 | //设置AVPlayerViewController内部的AVPlayer为刚创建的AVPlayer 55 | self.AVPlayer.player = player; 56 | //添加到self.view上面去 57 | [self.view.layer addSublayer:layer]; 58 | //开始播放 59 | [self.AVPlayer.player play]; 60 | 61 | 62 | 63 | //这里设置的是重复播放。 64 | [[NSNotificationCenter defaultCenter] addObserver:self 65 | selector:@selector(playDidEnd:) 66 | name:AVPlayerItemDidPlayToEndTimeNotification 67 | object:item]; 68 | 69 | 70 | //定时器。延迟3秒再出现进入应用按钮 71 | [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(setupLoginView) userInfo:nil repeats:YES]; 72 | 73 | } 74 | 75 | 76 | //播放完成的代理 77 | - (void)playDidEnd:(NSNotification *)Notification{ 78 | //播放完成后。设置播放进度为0 。 重新播放 79 | [self.AVPlayer.player seekToTime:CMTimeMake(0, 1)]; 80 | //开始播放 81 | [self.AVPlayer.player play]; 82 | } 83 | 84 | 85 | 86 | - (void)setupLoginView 87 | { 88 | //进入按钮 89 | UIButton *enterMainButton = [[UIButton alloc] init]; 90 | enterMainButton.frame = CGRectMake(24, [UIScreen mainScreen].bounds.size.height - 32 - 48, [UIScreen mainScreen].bounds.size.width - 48, 48); 91 | enterMainButton.layer.borderWidth = 1; 92 | enterMainButton.layer.cornerRadius = 24; 93 | enterMainButton.alpha = 0; 94 | enterMainButton.layer.borderColor = [UIColor whiteColor].CGColor; 95 | [enterMainButton setTitle:@"进入应用" forState:UIControlStateNormal]; 96 | [self.view addSubview:enterMainButton]; 97 | [enterMainButton addTarget:self action:@selector(enterMainAction:) forControlEvents:UIControlEventTouchUpInside]; 98 | 99 | [UIView animateWithDuration:0.5 animations:^{ 100 | enterMainButton.alpha = 1; 101 | }]; 102 | } 103 | 104 | 105 | 106 | - (void)enterMainAction:(UIButton *)btn { 107 | 108 | self.VC = [[UIViewController alloc]init]; 109 | self.view.window.rootViewController = self.VC; 110 | } 111 | @end 112 | -------------------------------------------------------------------------------- /KNStartMovie.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 48; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | C216D5CC1F8B1EDC00BE317F /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C216D5CB1F8B1EDC00BE317F /* AppDelegate.m */; }; 11 | C216D5CF1F8B1EDC00BE317F /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C216D5CE1F8B1EDC00BE317F /* ViewController.m */; }; 12 | C216D5D21F8B1EDC00BE317F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C216D5D01F8B1EDC00BE317F /* Main.storyboard */; }; 13 | C216D5D41F8B1EDC00BE317F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C216D5D31F8B1EDC00BE317F /* Assets.xcassets */; }; 14 | C216D5D71F8B1EDC00BE317F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C216D5D51F8B1EDC00BE317F /* LaunchScreen.storyboard */; }; 15 | C216D5DA1F8B1EDC00BE317F /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C216D5D91F8B1EDC00BE317F /* main.m */; }; 16 | C216D5E81F8B57E200BE317F /* movie.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = C216D5E71F8B57BA00BE317F /* movie.mp4 */; }; 17 | C2BF841220B7F59B00DCCCA7 /* KNMovieViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C2BF841120B7F59B00DCCCA7 /* KNMovieViewController.m */; }; 18 | /* End PBXBuildFile section */ 19 | 20 | /* Begin PBXFileReference section */ 21 | C216D5C71F8B1EDC00BE317F /* KNStartMovie.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = KNStartMovie.app; sourceTree = BUILT_PRODUCTS_DIR; }; 22 | C216D5CA1F8B1EDC00BE317F /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 23 | C216D5CB1F8B1EDC00BE317F /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 24 | C216D5CD1F8B1EDC00BE317F /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; 25 | C216D5CE1F8B1EDC00BE317F /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; 26 | C216D5D11F8B1EDC00BE317F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 27 | C216D5D31F8B1EDC00BE317F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 28 | C216D5D61F8B1EDC00BE317F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 29 | C216D5D81F8B1EDC00BE317F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 30 | C216D5D91F8B1EDC00BE317F /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 31 | C216D5E71F8B57BA00BE317F /* movie.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = movie.mp4; sourceTree = ""; }; 32 | C2BF841020B7F59B00DCCCA7 /* KNMovieViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KNMovieViewController.h; sourceTree = ""; }; 33 | C2BF841120B7F59B00DCCCA7 /* KNMovieViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KNMovieViewController.m; sourceTree = ""; }; 34 | /* End PBXFileReference section */ 35 | 36 | /* Begin PBXFrameworksBuildPhase section */ 37 | C216D5C41F8B1EDC00BE317F /* Frameworks */ = { 38 | isa = PBXFrameworksBuildPhase; 39 | buildActionMask = 2147483647; 40 | files = ( 41 | ); 42 | runOnlyForDeploymentPostprocessing = 0; 43 | }; 44 | /* End PBXFrameworksBuildPhase section */ 45 | 46 | /* Begin PBXGroup section */ 47 | C216D5BE1F8B1EDC00BE317F = { 48 | isa = PBXGroup; 49 | children = ( 50 | C216D5C91F8B1EDC00BE317F /* KNStartMovie */, 51 | C216D5C81F8B1EDC00BE317F /* Products */, 52 | ); 53 | sourceTree = ""; 54 | }; 55 | C216D5C81F8B1EDC00BE317F /* Products */ = { 56 | isa = PBXGroup; 57 | children = ( 58 | C216D5C71F8B1EDC00BE317F /* KNStartMovie.app */, 59 | ); 60 | name = Products; 61 | sourceTree = ""; 62 | }; 63 | C216D5C91F8B1EDC00BE317F /* KNStartMovie */ = { 64 | isa = PBXGroup; 65 | children = ( 66 | C216D5E71F8B57BA00BE317F /* movie.mp4 */, 67 | C216D5CA1F8B1EDC00BE317F /* AppDelegate.h */, 68 | C216D5CB1F8B1EDC00BE317F /* AppDelegate.m */, 69 | C216D5CD1F8B1EDC00BE317F /* ViewController.h */, 70 | C216D5CE1F8B1EDC00BE317F /* ViewController.m */, 71 | C216D5D01F8B1EDC00BE317F /* Main.storyboard */, 72 | C2BF840F20B7F59B00DCCCA7 /* KNMovieView */, 73 | C216D5D31F8B1EDC00BE317F /* Assets.xcassets */, 74 | C216D5D51F8B1EDC00BE317F /* LaunchScreen.storyboard */, 75 | C216D5D81F8B1EDC00BE317F /* Info.plist */, 76 | C216D5D91F8B1EDC00BE317F /* main.m */, 77 | ); 78 | path = KNStartMovie; 79 | sourceTree = ""; 80 | }; 81 | C2BF840F20B7F59B00DCCCA7 /* KNMovieView */ = { 82 | isa = PBXGroup; 83 | children = ( 84 | C2BF841020B7F59B00DCCCA7 /* KNMovieViewController.h */, 85 | C2BF841120B7F59B00DCCCA7 /* KNMovieViewController.m */, 86 | ); 87 | path = KNMovieView; 88 | sourceTree = ""; 89 | }; 90 | /* End PBXGroup section */ 91 | 92 | /* Begin PBXNativeTarget section */ 93 | C216D5C61F8B1EDC00BE317F /* KNStartMovie */ = { 94 | isa = PBXNativeTarget; 95 | buildConfigurationList = C216D5DD1F8B1EDC00BE317F /* Build configuration list for PBXNativeTarget "KNStartMovie" */; 96 | buildPhases = ( 97 | C216D5C31F8B1EDC00BE317F /* Sources */, 98 | C216D5C41F8B1EDC00BE317F /* Frameworks */, 99 | C216D5C51F8B1EDC00BE317F /* Resources */, 100 | ); 101 | buildRules = ( 102 | ); 103 | dependencies = ( 104 | ); 105 | name = KNStartMovie; 106 | productName = KNStartMovie; 107 | productReference = C216D5C71F8B1EDC00BE317F /* KNStartMovie.app */; 108 | productType = "com.apple.product-type.application"; 109 | }; 110 | /* End PBXNativeTarget section */ 111 | 112 | /* Begin PBXProject section */ 113 | C216D5BF1F8B1EDC00BE317F /* Project object */ = { 114 | isa = PBXProject; 115 | attributes = { 116 | LastUpgradeCheck = 0900; 117 | ORGANIZATIONNAME = KrystalName; 118 | TargetAttributes = { 119 | C216D5C61F8B1EDC00BE317F = { 120 | CreatedOnToolsVersion = 9.0; 121 | ProvisioningStyle = Automatic; 122 | SystemCapabilities = { 123 | com.apple.BackgroundModes = { 124 | enabled = 0; 125 | }; 126 | }; 127 | }; 128 | }; 129 | }; 130 | buildConfigurationList = C216D5C21F8B1EDC00BE317F /* Build configuration list for PBXProject "KNStartMovie" */; 131 | compatibilityVersion = "Xcode 8.0"; 132 | developmentRegion = en; 133 | hasScannedForEncodings = 0; 134 | knownRegions = ( 135 | en, 136 | Base, 137 | ); 138 | mainGroup = C216D5BE1F8B1EDC00BE317F; 139 | productRefGroup = C216D5C81F8B1EDC00BE317F /* Products */; 140 | projectDirPath = ""; 141 | projectRoot = ""; 142 | targets = ( 143 | C216D5C61F8B1EDC00BE317F /* KNStartMovie */, 144 | ); 145 | }; 146 | /* End PBXProject section */ 147 | 148 | /* Begin PBXResourcesBuildPhase section */ 149 | C216D5C51F8B1EDC00BE317F /* Resources */ = { 150 | isa = PBXResourcesBuildPhase; 151 | buildActionMask = 2147483647; 152 | files = ( 153 | C216D5E81F8B57E200BE317F /* movie.mp4 in Resources */, 154 | C216D5D71F8B1EDC00BE317F /* LaunchScreen.storyboard in Resources */, 155 | C216D5D41F8B1EDC00BE317F /* Assets.xcassets in Resources */, 156 | C216D5D21F8B1EDC00BE317F /* Main.storyboard in Resources */, 157 | ); 158 | runOnlyForDeploymentPostprocessing = 0; 159 | }; 160 | /* End PBXResourcesBuildPhase section */ 161 | 162 | /* Begin PBXSourcesBuildPhase section */ 163 | C216D5C31F8B1EDC00BE317F /* Sources */ = { 164 | isa = PBXSourcesBuildPhase; 165 | buildActionMask = 2147483647; 166 | files = ( 167 | C216D5CF1F8B1EDC00BE317F /* ViewController.m in Sources */, 168 | C216D5DA1F8B1EDC00BE317F /* main.m in Sources */, 169 | C2BF841220B7F59B00DCCCA7 /* KNMovieViewController.m in Sources */, 170 | C216D5CC1F8B1EDC00BE317F /* AppDelegate.m in Sources */, 171 | ); 172 | runOnlyForDeploymentPostprocessing = 0; 173 | }; 174 | /* End PBXSourcesBuildPhase section */ 175 | 176 | /* Begin PBXVariantGroup section */ 177 | C216D5D01F8B1EDC00BE317F /* Main.storyboard */ = { 178 | isa = PBXVariantGroup; 179 | children = ( 180 | C216D5D11F8B1EDC00BE317F /* Base */, 181 | ); 182 | name = Main.storyboard; 183 | sourceTree = ""; 184 | }; 185 | C216D5D51F8B1EDC00BE317F /* LaunchScreen.storyboard */ = { 186 | isa = PBXVariantGroup; 187 | children = ( 188 | C216D5D61F8B1EDC00BE317F /* Base */, 189 | ); 190 | name = LaunchScreen.storyboard; 191 | sourceTree = ""; 192 | }; 193 | /* End PBXVariantGroup section */ 194 | 195 | /* Begin XCBuildConfiguration section */ 196 | C216D5DB1F8B1EDC00BE317F /* Debug */ = { 197 | isa = XCBuildConfiguration; 198 | buildSettings = { 199 | ALWAYS_SEARCH_USER_PATHS = NO; 200 | CLANG_ANALYZER_NONNULL = YES; 201 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 202 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 203 | CLANG_CXX_LIBRARY = "libc++"; 204 | CLANG_ENABLE_MODULES = YES; 205 | CLANG_ENABLE_OBJC_ARC = YES; 206 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 207 | CLANG_WARN_BOOL_CONVERSION = YES; 208 | CLANG_WARN_COMMA = YES; 209 | CLANG_WARN_CONSTANT_CONVERSION = YES; 210 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 211 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 212 | CLANG_WARN_EMPTY_BODY = YES; 213 | CLANG_WARN_ENUM_CONVERSION = YES; 214 | CLANG_WARN_INFINITE_RECURSION = YES; 215 | CLANG_WARN_INT_CONVERSION = YES; 216 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 217 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 218 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 219 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 220 | CLANG_WARN_STRICT_PROTOTYPES = YES; 221 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 222 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 223 | CLANG_WARN_UNREACHABLE_CODE = YES; 224 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 225 | CODE_SIGN_IDENTITY = "iPhone Developer"; 226 | COPY_PHASE_STRIP = NO; 227 | DEBUG_INFORMATION_FORMAT = dwarf; 228 | ENABLE_STRICT_OBJC_MSGSEND = YES; 229 | ENABLE_TESTABILITY = YES; 230 | GCC_C_LANGUAGE_STANDARD = gnu11; 231 | GCC_DYNAMIC_NO_PIC = NO; 232 | GCC_NO_COMMON_BLOCKS = YES; 233 | GCC_OPTIMIZATION_LEVEL = 0; 234 | GCC_PREPROCESSOR_DEFINITIONS = ( 235 | "DEBUG=1", 236 | "$(inherited)", 237 | ); 238 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 239 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 240 | GCC_WARN_UNDECLARED_SELECTOR = YES; 241 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 242 | GCC_WARN_UNUSED_FUNCTION = YES; 243 | GCC_WARN_UNUSED_VARIABLE = YES; 244 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 245 | MTL_ENABLE_DEBUG_INFO = YES; 246 | ONLY_ACTIVE_ARCH = YES; 247 | SDKROOT = iphoneos; 248 | }; 249 | name = Debug; 250 | }; 251 | C216D5DC1F8B1EDC00BE317F /* Release */ = { 252 | isa = XCBuildConfiguration; 253 | buildSettings = { 254 | ALWAYS_SEARCH_USER_PATHS = NO; 255 | CLANG_ANALYZER_NONNULL = YES; 256 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 257 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 258 | CLANG_CXX_LIBRARY = "libc++"; 259 | CLANG_ENABLE_MODULES = YES; 260 | CLANG_ENABLE_OBJC_ARC = YES; 261 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 262 | CLANG_WARN_BOOL_CONVERSION = YES; 263 | CLANG_WARN_COMMA = YES; 264 | CLANG_WARN_CONSTANT_CONVERSION = YES; 265 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 266 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 267 | CLANG_WARN_EMPTY_BODY = YES; 268 | CLANG_WARN_ENUM_CONVERSION = YES; 269 | CLANG_WARN_INFINITE_RECURSION = YES; 270 | CLANG_WARN_INT_CONVERSION = YES; 271 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 272 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 273 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 274 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 275 | CLANG_WARN_STRICT_PROTOTYPES = YES; 276 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 277 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 278 | CLANG_WARN_UNREACHABLE_CODE = YES; 279 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 280 | CODE_SIGN_IDENTITY = "iPhone Developer"; 281 | COPY_PHASE_STRIP = NO; 282 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 283 | ENABLE_NS_ASSERTIONS = NO; 284 | ENABLE_STRICT_OBJC_MSGSEND = YES; 285 | GCC_C_LANGUAGE_STANDARD = gnu11; 286 | GCC_NO_COMMON_BLOCKS = YES; 287 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 288 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 289 | GCC_WARN_UNDECLARED_SELECTOR = YES; 290 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 291 | GCC_WARN_UNUSED_FUNCTION = YES; 292 | GCC_WARN_UNUSED_VARIABLE = YES; 293 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 294 | MTL_ENABLE_DEBUG_INFO = NO; 295 | SDKROOT = iphoneos; 296 | VALIDATE_PRODUCT = YES; 297 | }; 298 | name = Release; 299 | }; 300 | C216D5DE1F8B1EDC00BE317F /* Debug */ = { 301 | isa = XCBuildConfiguration; 302 | buildSettings = { 303 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 304 | CODE_SIGN_STYLE = Automatic; 305 | DEVELOPMENT_TEAM = VG6Q85865M; 306 | INFOPLIST_FILE = KNStartMovie/Info.plist; 307 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 308 | PRODUCT_BUNDLE_IDENTIFIER = Leessang.KNStartMovie; 309 | PRODUCT_NAME = "$(TARGET_NAME)"; 310 | TARGETED_DEVICE_FAMILY = "1,2"; 311 | }; 312 | name = Debug; 313 | }; 314 | C216D5DF1F8B1EDC00BE317F /* Release */ = { 315 | isa = XCBuildConfiguration; 316 | buildSettings = { 317 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 318 | CODE_SIGN_STYLE = Automatic; 319 | DEVELOPMENT_TEAM = VG6Q85865M; 320 | INFOPLIST_FILE = KNStartMovie/Info.plist; 321 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 322 | PRODUCT_BUNDLE_IDENTIFIER = Leessang.KNStartMovie; 323 | PRODUCT_NAME = "$(TARGET_NAME)"; 324 | TARGETED_DEVICE_FAMILY = "1,2"; 325 | }; 326 | name = Release; 327 | }; 328 | /* End XCBuildConfiguration section */ 329 | 330 | /* Begin XCConfigurationList section */ 331 | C216D5C21F8B1EDC00BE317F /* Build configuration list for PBXProject "KNStartMovie" */ = { 332 | isa = XCConfigurationList; 333 | buildConfigurations = ( 334 | C216D5DB1F8B1EDC00BE317F /* Debug */, 335 | C216D5DC1F8B1EDC00BE317F /* Release */, 336 | ); 337 | defaultConfigurationIsVisible = 0; 338 | defaultConfigurationName = Release; 339 | }; 340 | C216D5DD1F8B1EDC00BE317F /* Build configuration list for PBXNativeTarget "KNStartMovie" */ = { 341 | isa = XCConfigurationList; 342 | buildConfigurations = ( 343 | C216D5DE1F8B1EDC00BE317F /* Debug */, 344 | C216D5DF1F8B1EDC00BE317F /* Release */, 345 | ); 346 | defaultConfigurationIsVisible = 0; 347 | defaultConfigurationName = Release; 348 | }; 349 | /* End XCConfigurationList section */ 350 | }; 351 | rootObject = C216D5BF1F8B1EDC00BE317F /* Project object */; 352 | } 353 | --------------------------------------------------------------------------------