cocoapods-ykutility 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +7 -0
  2. data/lib/cocoapods-ykutility/command/Ykutility.rb +33 -0
  3. data/lib/cocoapods-ykutility/command/ykutility/create.rb +74 -0
  4. data/lib/cocoapods-ykutility/command.rb +1 -0
  5. data/lib/cocoapods-ykutility/function/yk_create_pod_action.rb +117 -0
  6. data/lib/cocoapods-ykutility/function/yk_create_pod_config.rb +22 -0
  7. data/lib/cocoapods-ykutility/function/yk_exchange_tool.rb +45 -0
  8. data/lib/cocoapods-ykutility/function/yk_log_tool.rb +21 -0
  9. data/lib/cocoapods-ykutility/gem_version.rb +4 -0
  10. data/lib/cocoapods-ykutility.rb +1 -0
  11. data/lib/cocoapods_plugin.rb +1 -0
  12. data/podTemplate/example/Podfile +44 -0
  13. data/podTemplate/example/Podfile.lock +16 -0
  14. data/podTemplate/example/YKRPC_POD_NAME_Example/AppDelegate.swift +36 -0
  15. data/podTemplate/example/YKRPC_POD_NAME_Example/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
  16. data/podTemplate/example/YKRPC_POD_NAME_Example/Assets.xcassets/AppIcon.appiconset/Contents.json +13 -0
  17. data/podTemplate/example/YKRPC_POD_NAME_Example/Assets.xcassets/Contents.json +6 -0
  18. data/podTemplate/example/YKRPC_POD_NAME_Example/Assets.xcassets/icon.imageset/Contents.json +21 -0
  19. data/podTemplate/example/YKRPC_POD_NAME_Example/Assets.xcassets/icon.imageset/icon.png +0 -0
  20. data/podTemplate/example/YKRPC_POD_NAME_Example/Base.lproj/LaunchScreen.storyboard +55 -0
  21. data/podTemplate/example/YKRPC_POD_NAME_Example/Base.lproj/Main.storyboard +65 -0
  22. data/podTemplate/example/YKRPC_POD_NAME_Example/Info.plist +25 -0
  23. data/podTemplate/example/YKRPC_POD_NAME_Example/SceneDelegate.swift +52 -0
  24. data/podTemplate/example/YKRPC_POD_NAME_Example/ViewController.swift +20 -0
  25. data/podTemplate/example/YKRPC_POD_NAME_Example.xcodeproj/project.pbxproj +362 -0
  26. data/podTemplate/example/YKRPC_POD_NAME_Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  27. data/podTemplate/example/YKRPC_POD_NAME_Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  28. data/podTemplate/example/YKRPC_POD_NAME_Example.xcodeproj/project.xcworkspace/xcuserdata/imac24inch.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  29. data/podTemplate/example/YKRPC_POD_NAME_Example.xcodeproj/xcuserdata/imac24inch.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  30. data/podTemplate/objc/LICENSE +19 -0
  31. data/podTemplate/objc/README.md +60 -0
  32. data/podTemplate/objc/YKRPC_POD_NAME/Assets/Images.xcassets/.gitkeep +0 -0
  33. data/podTemplate/objc/YKRPC_POD_NAME/Private/.gitkeep +0 -0
  34. data/podTemplate/objc/YKRPC_POD_NAME/Public/YKRPC_POD_NAME.h +16 -0
  35. data/podTemplate/objc/YKRPC_POD_NAME/Public/YKRPC_POD_NAME.m +12 -0
  36. data/podTemplate/objc/YKRPC_POD_NAME.podspec +61 -0
  37. data/podTemplate/swift/LICENSE +19 -0
  38. data/podTemplate/swift/README.md +60 -0
  39. data/podTemplate/swift/YKRPC_POD_NAME/Assets/Images.xcassets/.gitkeep +0 -0
  40. data/podTemplate/swift/YKRPC_POD_NAME/Private/.gitkeep +0 -0
  41. data/podTemplate/swift/YKRPC_POD_NAME/Public/YKRPC_POD_NAME.swift +6 -0
  42. data/podTemplate/swift/YKRPC_POD_NAME.podspec +61 -0
  43. metadata +84 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: dc117e8086c2837b3d7b49a2dc44c641ffd10dcb57dae7ae11178cf59f80cf45
4
+ data.tar.gz: d44bf31e0a0f060750144297636ee2aca87195bab1176a4452a175f0956efa80
5
+ SHA512:
6
+ metadata.gz: f878d8679e9c066e088736982a40098b0eabb9db1f0888dab221907d40379bad1fd9809a9924279d0e9551c3825da737f7b1e859e9501e38f7d8d6a302f16720
7
+ data.tar.gz: c29dda8b533c1fa47273262a5bb9a7769bf5383b3f11ed6820de677426c3cdbbf1d693fd5d9003fd0b993340a610354fdd00545877f38178745e87cf6d55ce59
@@ -0,0 +1,33 @@
1
+ require 'cocoapods'
2
+ require 'cocoapods-ykutility/command/ykutility/create'
3
+
4
+ module Pod
5
+ class Command
6
+ # This is an example of a cocoapods plugin adding a top-level subcommand
7
+ # to the 'pod' command.
8
+ #
9
+ # You can also create subcommands of existing or new commands. Say you
10
+ # wanted to add a subcommand to `list` to show newly deprecated pods,
11
+ # (e.g. `pod list deprecated`), there are a few things that would need
12
+ # to change.
13
+ #
14
+ # - move this file to `lib/pod/command/list/deprecated.rb` and update
15
+ # the class to exist in the the Pod::Command::List namespace
16
+ # - change this class to extend from `List` instead of `Command`. This
17
+ # tells the plugin system that it is a subcommand of `list`.
18
+ # - edit `lib/cocoapods_plugins.rb` to require this file
19
+ #
20
+ # @todo Create a PR to add your plugin to CocoaPods/cocoapods.org
21
+ # in the `plugins.json` file, once your plugin is released.
22
+ #
23
+ class Ykutility < Command
24
+ self.abstract_command = true
25
+
26
+ self.summary = '组件创建工具.'
27
+ self.description = <<-DESC
28
+ 组件创建工具,用于创建定制化组件
29
+ DESC
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+ require 'cocoapods-ykutility/function/yk_create_pod_action'
3
+ require 'cocoapods-ykutility/gem_version'
4
+
5
+ module Pod
6
+ class Command
7
+ class Ykutility < Command
8
+
9
+ require 'cocoapods-ykutility/function/yk_create_pod_config'
10
+ class Create < Ykutility
11
+
12
+ self.summary = 'Creates a new Pod'
13
+
14
+ self.description = <<-DESC
15
+ 依据标准化模版,创建组件
16
+ DESC
17
+
18
+ self.arguments = [
19
+ CLAide::Argument.new('NAME', true)
20
+ ]
21
+
22
+ def self.options
23
+ [
24
+ ['--language=LANGUAGE', 'Language [ ObjC / Swift ]'],
25
+ ['--no-demo', 'Without a demo application for your library'],
26
+ ['--author=AUTHOR', 'Author'],
27
+ ['--email=EMAIL', 'Email'],
28
+ ['--prefix=PREFIX', 'Prefix header'],
29
+ ['--pod-path=PATH', 'Pod created at path'],
30
+ ].concat(super)
31
+ end
32
+
33
+ def initialize(argv)
34
+ @config = YKPod::YKCreatePodConfig.new()
35
+
36
+ @config.name = argv.shift_argument
37
+ @config.language = (["objc", "oc"].include? argv.option('language', "swift").downcase) ? "objc" : "swift"
38
+ @config.with_demo = !argv.flag?('no-demo', false)
39
+ @config.author = argv.option('author', open("|git config --global user.name").gets).strip.gsub('.', '')
40
+ @config.author_email = argv.option('email', open("|git config --global user.email").gets).strip
41
+ @config.prefix = argv.option('prefix', "YK")
42
+ @config.path = File.expand_path(argv.option('pod-path', Dir.getwd.to_s))
43
+ super
44
+ @additional_args = argv.remainder!
45
+ end
46
+
47
+ def validate!
48
+ super
49
+ help! 'A name for the Pod is required.' unless @config.name
50
+ help! 'The Pod name cannot contain spaces.' if @config.name =~ /\s/
51
+ help! 'The Pod name cannot contain plusses.' if @config.name =~ /\+/
52
+ help! "The Pod name cannot begin with a '.'" if @config.name[0, 1] == '.'
53
+ end
54
+
55
+ def run
56
+ puts("create pod run")
57
+
58
+ YKPod::YKCreate.new(@config).createAction()
59
+
60
+ end
61
+
62
+ # Runs the template configuration utilities.
63
+ #
64
+ # @return [void]
65
+ #
66
+ def print_info
67
+ UI.puts "\nTo learn more about the template see `#{CocoapodsYkPodUtility::YK_POD_TEMPLATE_PATH}`."
68
+ end
69
+
70
+ end
71
+
72
+ end
73
+ end
74
+ end
@@ -0,0 +1 @@
1
+ require 'cocoapods-ykutility/command/Ykutility'
@@ -0,0 +1,117 @@
1
+ # frozen_string_literal: true
2
+ module YKPod
3
+ require 'fileutils'
4
+ require 'cocoapods'
5
+
6
+ class YKCreate
7
+ require 'cocoapods-ykutility/function/yk_create_pod_config'
8
+ require 'cocoapods-ykutility/function/yk_log_tool'
9
+ require 'find'
10
+ include YKPod::YKLogTool
11
+
12
+ require 'cocoapods-ykutility/gem_version'
13
+ require 'cocoapods-ykutility/function/yk_exchange_tool'
14
+ include YKPod::YKExchangeTool
15
+
16
+ def initialize(conf)
17
+
18
+ @config = YKPod::YKCreatePodConfig
19
+ @config = conf
20
+
21
+ # name = conf.start_with?(conf.prefix) ? name : conf.prefix + name
22
+ # @config.name = name
23
+
24
+ @project_dir_dest = File.join(@config.path, @config.prefix_name)
25
+ @example_dir_dest = File.join(@project_dir_dest, "Example")
26
+
27
+ @template_pod_path = File.join(CocoapodsYkPodUtility::YK_POD_TEMPLATE_PATH, @config.language)
28
+ @template_example_path = File.join(CocoapodsYkPodUtility::YK_POD_TEMPLATE_PATH, "example")
29
+
30
+ time_str = Time.now.strftime("%Y/%m/%d")
31
+ year_str = Time.now.strftime("%Y")
32
+ # 关键字替换
33
+ @keyMap = {
34
+ "YKRPC_POD_NAME" => @config.prefix_name,
35
+ "YKPRC_AUTHOR_NAME" => @config.author,
36
+ "YKPRC_AUTHOR_EMAIL" => @config.author_email,
37
+ "YKPRC_CLASS_PREFIX" => @config.prefix,
38
+ "YKPRC_CREATE_DATE" => time_str,
39
+ "YKPRC_CREATE_YEAR" => year_str,
40
+ }
41
+
42
+ end
43
+
44
+ def createAction()
45
+ ykNotice "create pod execute: \n name: #{@config.name} \n language: #{@config.language} \n with_demo: #{@config.with_demo} \n path: #{@config.path} \n author: #{@config.author}\n author_email: #{@config.author_email}"
46
+ code = create_path
47
+ exit!(code) unless code == 0
48
+
49
+ code = create_pod
50
+ exit!(code) unless code == 0
51
+
52
+ if @config.with_demo
53
+ code = create_example
54
+ exit!(code) unless code == 0
55
+
56
+ pod_install
57
+ end
58
+
59
+ end
60
+
61
+ private
62
+
63
+ def create_path()
64
+ ykNotice "模板路径:#{@template_pod_path}"
65
+ return ykError("文件已存在: #{@project_dir_dest}") if File.exist?(@project_dir_dest)
66
+
67
+ FileUtils.mkdir(@project_dir_dest)
68
+ return 0
69
+ end
70
+
71
+ def create_pod()
72
+ ykNotice "create pod"
73
+ pod_dir_cache = File.join(@project_dir_dest, "#{@config.prefix_name}_cache")
74
+ pod_dir_dest = File.join(@project_dir_dest)
75
+ FileUtils.copy_entry(@template_pod_path, pod_dir_cache)
76
+
77
+ # 改文件夹
78
+ file_arr = updateFileDirs(pod_dir_cache, 'YKRPC_POD_NAME',@config.prefix_name)
79
+
80
+ # 替换 YKRPC_POD_NAME YKPRC_AUTHOR_NAME YKPRC_AUTHOR_EMAIL YKPRC_CREATE_DATE YKPRC_CREATE_YEAR
81
+ updateFiles(file_arr, @keyMap)
82
+
83
+ FileUtils.copy_entry(pod_dir_cache, pod_dir_dest)
84
+ FileUtils.rm_r(pod_dir_cache)
85
+ return 0
86
+ end
87
+
88
+ def create_example()
89
+ ykNotice "create example"
90
+ example_dir_cache = File.join(@project_dir_dest, "Example_cache")
91
+
92
+ FileUtils.copy_entry(@template_example_path, example_dir_cache)
93
+
94
+ # 改文件夹
95
+ file_arr = updateFileDirs(example_dir_cache, 'YKRPC_POD_NAME', @config.prefix_name)
96
+
97
+ # 替换 YKRPC_POD_NAME YKPRC_AUTHOR_NAME YKPRC_AUTHOR_EMAIL YKPRC_CREATE_DATE YKPRC_CREATE_YEAR
98
+ updateFiles(file_arr, @keyMap)
99
+
100
+ FileUtils.copy_entry(example_dir_cache, @example_dir_dest)
101
+ FileUtils.rm_r(example_dir_cache)
102
+
103
+ return 0
104
+ end
105
+
106
+ def pod_install
107
+ ykNotice "open project"
108
+ Dir.chdir(@example_dir_dest) do
109
+ system('pod install')
110
+ system('pod install')
111
+ system('open -a /Applications/Xcode.app ./*.xcworkspace')
112
+ end
113
+ end
114
+
115
+
116
+ end
117
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module YKPod
4
+
5
+ class YKCreatePodConfig
6
+ attr_accessor :name, :language, :with_demo, :author, :author_email, :prefix, :path
7
+
8
+ def initialize()
9
+ @name = ""
10
+ @language = ""
11
+ @with_demo = true
12
+ @author = open("|git config --global user.name").gets.strip.gsub('.', '')
13
+ @author_email = open("|git config --global user.email").gets.strip
14
+ @prefix = "YK"
15
+ @path = File.expand_path(Dir.getwd.to_s)
16
+ end
17
+
18
+ def prefix_name
19
+ return name.start_with?(prefix) ? name : prefix + name
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module YKPod
4
+ module YKExchangeTool
5
+ require 'cocoapods-ykutility/function/yk_log_tool'
6
+ include YKPod::YKLogTool
7
+ def updateFileDirs(rootDir, keyWord, destWord)
8
+ Dir.glob("#{rootDir}/**/**/**/**").each do |name|
9
+ next if File.directory?(name) == false
10
+ name_new = name.gsub(keyWord, destWord)
11
+ FileUtils.mv(name, name_new) unless name_new == name
12
+ end
13
+
14
+ # 改文件名
15
+
16
+ fileArr = []
17
+ Dir.glob("#{rootDir}/**/**/**/**").each do |name|
18
+ next if Dir.exists? name
19
+
20
+ name_new = name.gsub(keyWord, destWord)
21
+ FileUtils.mv(name, name_new) unless name_new == name
22
+ fileArr.append(name_new)
23
+ end
24
+
25
+ return fileArr
26
+ end
27
+
28
+ def updateFiles(file_arr, key_map)
29
+ file_arr.each do |one|
30
+ onefile = File.read one
31
+ key_map.each do |key, dest|
32
+ if key.blank? or dest.blank?
33
+ next
34
+ end
35
+ onefile.gsub!(key, dest)
36
+ end
37
+
38
+ File.open(one, "w") { |file| file.puts onefile }
39
+ end
40
+ end
41
+
42
+ end
43
+
44
+ end
45
+
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module YKPod
4
+ module YKLogTool
5
+ def ykWarning(message)
6
+ puts "\n[⚠️] #{message}".yellow
7
+ return 0
8
+ end
9
+
10
+ def ykNotice(message)
11
+ puts "\033[0;34m\n[❕] #{message}\e[0m"
12
+ return 0
13
+ end
14
+
15
+ def ykError(message)
16
+ puts "\n[❌] #{message}".red
17
+ return 1
18
+ end
19
+ end
20
+
21
+ end
@@ -0,0 +1,4 @@
1
+ module CocoapodsYkPodUtility
2
+ VERSION = "0.0.12"
3
+ YK_POD_TEMPLATE_PATH = File.expand_path(File.join(__FILE__, '../../../podTemplate'))
4
+ end
@@ -0,0 +1 @@
1
+ require 'cocoapods-ykutility/gem_version'
@@ -0,0 +1 @@
1
+ require 'cocoapods-ykutility/command'
@@ -0,0 +1,44 @@
1
+ #私有源
2
+ # source 'xxxxx'
3
+
4
+ #cocoapods源 最后声明, 可以解决私有源pod 与 公共源pod 重名的问题
5
+ source 'https://github.com/CocoaPods/Specs.git'
6
+
7
+ # Uncomment the next line to define a global platform for your project
8
+ platform :ios, '9.0'
9
+
10
+ inhibit_all_warnings!
11
+
12
+ use_frameworks! :linkage => :static # 使用 framework形势的静态库, 注释可变为.a 静态库
13
+ use_modular_headers! #此字段用于pod自动生成 swift module 伞文件
14
+
15
+ project 'YKRPC_POD_NAME_Example.xcodeproj'
16
+ target 'YKRPC_POD_NAME_Example' do
17
+ # Pods for YKRPC_POD_NAME_Example
18
+ pod 'YKRPC_POD_NAME', :path => '../'
19
+
20
+ end
21
+
22
+
23
+ # cocoapods pod install hook
24
+ post_install do |installer|
25
+ # 添加创建时候类前缀
26
+ installer.pods_project.root_object.attributes["CLASSPREFIX"] = "YKPRC_CLASS_PREFIX" # 添加 class prefix
27
+ # project编辑配置
28
+ installer.pods_project.build_configurations.each do |config|
29
+ config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '10.0'
30
+ config.build_settings['CLANG_WARN_DOCUMENTATION_COMMENTS'] = 'NO'
31
+ end
32
+
33
+ # 单个target编辑配置
34
+ installer.pods_project.targets.each do |target|
35
+ target.build_configurations.each do |config|
36
+ config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '10.0' #修改pod的最低版本
37
+
38
+ # 以下是xcode14 忽略 bundle 类型pod签名
39
+ config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
40
+ config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
41
+ config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,16 @@
1
+ PODS:
2
+ - YKRPC_POD_NAME (0.0.1)
3
+
4
+ DEPENDENCIES:
5
+ - YKRPC_POD_NAME (from `../objc`)
6
+
7
+ EXTERNAL SOURCES:
8
+ YKRPC_POD_NAME:
9
+ :path: "../objc"
10
+
11
+ SPEC CHECKSUMS:
12
+ YKRPC_POD_NAME: 26947dec6db12d4a44df700fb5bfb0f90c02f21b
13
+
14
+ PODFILE CHECKSUM: 5e7746ccd0d2eeea476f35e764737f8b9a447b6e
15
+
16
+ COCOAPODS: 1.11.3
@@ -0,0 +1,36 @@
1
+ //
2
+ // AppDelegate.swift
3
+ // YKRPC_POD_NAME_Example
4
+ //
5
+ // Created by YKPRC_AUTHOR_NAME on YKPRC_CREATE_DATE.
6
+ //
7
+
8
+ import UIKit
9
+
10
+ @main
11
+ class AppDelegate: UIResponder, UIApplicationDelegate {
12
+
13
+
14
+
15
+ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
16
+ // Override point for customization after application launch.
17
+ return true
18
+ }
19
+
20
+ // MARK: UISceneSession Lifecycle
21
+
22
+ func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
23
+ // Called when a new scene session is being created.
24
+ // Use this method to select a configuration to create the new scene with.
25
+ return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
26
+ }
27
+
28
+ func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
29
+ // Called when the user discards a scene session.
30
+ // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
31
+ // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
32
+ }
33
+
34
+
35
+ }
36
+
@@ -0,0 +1,11 @@
1
+ {
2
+ "colors" : [
3
+ {
4
+ "idiom" : "universal"
5
+ }
6
+ ],
7
+ "info" : {
8
+ "author" : "xcode",
9
+ "version" : 1
10
+ }
11
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "images" : [
3
+ {
4
+ "idiom" : "universal",
5
+ "platform" : "ios",
6
+ "size" : "1024x1024"
7
+ }
8
+ ],
9
+ "info" : {
10
+ "author" : "xcode",
11
+ "version" : 1
12
+ }
13
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "info" : {
3
+ "author" : "xcode",
4
+ "version" : 1
5
+ }
6
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "images" : [
3
+ {
4
+ "filename" : "icon.png",
5
+ "idiom" : "universal",
6
+ "scale" : "1x"
7
+ },
8
+ {
9
+ "idiom" : "universal",
10
+ "scale" : "2x"
11
+ },
12
+ {
13
+ "idiom" : "universal",
14
+ "scale" : "3x"
15
+ }
16
+ ],
17
+ "info" : {
18
+ "author" : "xcode",
19
+ "version" : 1
20
+ }
21
+ }
@@ -0,0 +1,55 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21507" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
3
+ <device id="retina6_12" orientation="portrait" appearance="light"/>
4
+ <dependencies>
5
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21505"/>
6
+ <capability name="Safe area layout guides" minToolsVersion="9.0"/>
7
+ <capability name="System colors in document resources" minToolsVersion="11.0"/>
8
+ <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
9
+ </dependencies>
10
+ <scenes>
11
+ <!--View Controller-->
12
+ <scene sceneID="EHf-IW-A2E">
13
+ <objects>
14
+ <viewController id="01J-lp-oVM" sceneMemberID="viewController">
15
+ <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
16
+ <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
17
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
18
+ <subviews>
19
+ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="YKRPC_POD_NAME Example" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cs0-rF-rGH">
20
+ <rect key="frame" x="20" y="415.66666666666669" width="353" height="21"/>
21
+ <fontDescription key="fontDescription" type="system" pointSize="17"/>
22
+ <nil key="textColor"/>
23
+ <nil key="highlightedColor"/>
24
+ </label>
25
+ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Created by YKPRC_AUTHOR_NAME on YKPRC_CREATE_DATE" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vWs-zc-qKa">
26
+ <rect key="frame" x="20" y="766" width="353" height="12"/>
27
+ <fontDescription key="fontDescription" type="system" pointSize="10"/>
28
+ <nil key="textColor"/>
29
+ <nil key="highlightedColor"/>
30
+ </label>
31
+ </subviews>
32
+ <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
33
+ <color key="backgroundColor" systemColor="systemBackgroundColor"/>
34
+ <constraints>
35
+ <constraint firstItem="vWs-zc-qKa" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="20" id="6Ad-6u-PgH"/>
36
+ <constraint firstItem="cs0-rF-rGH" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="BhZ-Xm-UBX"/>
37
+ <constraint firstItem="6Tk-OE-BBY" firstAttribute="bottom" secondItem="vWs-zc-qKa" secondAttribute="bottom" constant="40" id="XO8-XE-VMu"/>
38
+ <constraint firstItem="cs0-rF-rGH" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="Znh-pV-TBT"/>
39
+ <constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="cs0-rF-rGH" secondAttribute="trailing" constant="20" id="iNz-wl-7t8"/>
40
+ <constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="vWs-zc-qKa" secondAttribute="trailing" constant="20" id="kMD-LU-B8m"/>
41
+ <constraint firstItem="cs0-rF-rGH" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="20" id="pKs-7l-z21"/>
42
+ </constraints>
43
+ </view>
44
+ </viewController>
45
+ <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
46
+ </objects>
47
+ <point key="canvasLocation" x="53" y="375"/>
48
+ </scene>
49
+ </scenes>
50
+ <resources>
51
+ <systemColor name="systemBackgroundColor">
52
+ <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
53
+ </systemColor>
54
+ </resources>
55
+ </document>
@@ -0,0 +1,65 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21507" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
3
+ <device id="retina6_12" orientation="portrait" appearance="light"/>
4
+ <dependencies>
5
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21505"/>
6
+ <capability name="Safe area layout guides" minToolsVersion="9.0"/>
7
+ <capability name="System colors in document resources" minToolsVersion="11.0"/>
8
+ <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
9
+ </dependencies>
10
+ <scenes>
11
+ <!--View Controller-->
12
+ <scene sceneID="tne-QT-ifu">
13
+ <objects>
14
+ <viewController id="BYZ-38-t0r" customClass="ViewController" customModule="YKRPC_POD_NAME_Example" customModuleProvider="target" sceneMemberID="viewController">
15
+ <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
16
+ <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
17
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
18
+ <subviews>
19
+ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="YKRPC_POD_NAME Example" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gzb-4I-vvV">
20
+ <rect key="frame" x="20" y="415.66666666666669" width="353" height="21"/>
21
+ <fontDescription key="fontDescription" type="system" pointSize="17"/>
22
+ <nil key="textColor"/>
23
+ <nil key="highlightedColor"/>
24
+ </label>
25
+ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Created by YKPRC_AUTHOR_NAME on YKPRC_CREATE_DATE" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iEE-t8-eTf">
26
+ <rect key="frame" x="20" y="766" width="353" height="12"/>
27
+ <fontDescription key="fontDescription" type="system" pointSize="10"/>
28
+ <nil key="textColor"/>
29
+ <nil key="highlightedColor"/>
30
+ </label>
31
+ <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon" translatesAutoresizingMaskIntoConstraints="NO" id="7M7-U5-alR">
32
+ <rect key="frame" x="161.66666666666666" y="295.66666666666669" width="70" height="70"/>
33
+ <constraints>
34
+ <constraint firstAttribute="width" constant="70" id="ESk-Ur-Xwo"/>
35
+ <constraint firstAttribute="height" constant="70" id="Zdj-VH-fyH"/>
36
+ </constraints>
37
+ </imageView>
38
+ </subviews>
39
+ <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
40
+ <color key="backgroundColor" systemColor="systemBackgroundColor"/>
41
+ <constraints>
42
+ <constraint firstItem="6Tk-OE-BBY" firstAttribute="bottom" secondItem="iEE-t8-eTf" secondAttribute="bottom" constant="40" id="1U0-nr-kAe"/>
43
+ <constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="iEE-t8-eTf" secondAttribute="trailing" constant="20" id="1oe-LB-wVD"/>
44
+ <constraint firstItem="iEE-t8-eTf" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="20" id="59u-mG-iOX"/>
45
+ <constraint firstItem="gzb-4I-vvV" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="IQk-Ld-wmq"/>
46
+ <constraint firstItem="gzb-4I-vvV" firstAttribute="top" secondItem="7M7-U5-alR" secondAttribute="bottom" constant="50" id="OrE-Xe-Wma"/>
47
+ <constraint firstItem="7M7-U5-alR" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="Ud3-8t-LHa"/>
48
+ <constraint firstItem="gzb-4I-vvV" firstAttribute="centerY" secondItem="8bC-Xf-vdC" secondAttribute="centerY" id="YrD-6v-7pA"/>
49
+ <constraint firstItem="gzb-4I-vvV" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="20" id="b2L-xt-tH1"/>
50
+ <constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="gzb-4I-vvV" secondAttribute="trailing" constant="20" id="yz5-fo-RHk"/>
51
+ </constraints>
52
+ </view>
53
+ </viewController>
54
+ <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
55
+ </objects>
56
+ <point key="canvasLocation" x="-37" y="4"/>
57
+ </scene>
58
+ </scenes>
59
+ <resources>
60
+ <image name="icon" width="256" height="256"/>
61
+ <systemColor name="systemBackgroundColor">
62
+ <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
63
+ </systemColor>
64
+ </resources>
65
+ </document>
@@ -0,0 +1,25 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>UIApplicationSceneManifest</key>
6
+ <dict>
7
+ <key>UIApplicationSupportsMultipleScenes</key>
8
+ <false/>
9
+ <key>UISceneConfigurations</key>
10
+ <dict>
11
+ <key>UIWindowSceneSessionRoleApplication</key>
12
+ <array>
13
+ <dict>
14
+ <key>UISceneConfigurationName</key>
15
+ <string>Default Configuration</string>
16
+ <key>UISceneDelegateClassName</key>
17
+ <string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
18
+ <key>UISceneStoryboardFile</key>
19
+ <string>Main</string>
20
+ </dict>
21
+ </array>
22
+ </dict>
23
+ </dict>
24
+ </dict>
25
+ </plist>