├── 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 | 
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 |
--------------------------------------------------------------------------------