cocoapods-ykutility 0.0.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/cocoapods-ykutility/command/Ykutility.rb +33 -0
- data/lib/cocoapods-ykutility/command/ykutility/create.rb +74 -0
- data/lib/cocoapods-ykutility/command.rb +1 -0
- data/lib/cocoapods-ykutility/function/yk_create_pod_action.rb +117 -0
- data/lib/cocoapods-ykutility/function/yk_create_pod_config.rb +22 -0
- data/lib/cocoapods-ykutility/function/yk_exchange_tool.rb +45 -0
- data/lib/cocoapods-ykutility/function/yk_log_tool.rb +21 -0
- data/lib/cocoapods-ykutility/gem_version.rb +4 -0
- data/lib/cocoapods-ykutility.rb +1 -0
- data/lib/cocoapods_plugin.rb +1 -0
- data/podTemplate/example/Podfile +44 -0
- data/podTemplate/example/Podfile.lock +16 -0
- data/podTemplate/example/YKRPC_POD_NAME_Example/AppDelegate.swift +36 -0
- data/podTemplate/example/YKRPC_POD_NAME_Example/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
- data/podTemplate/example/YKRPC_POD_NAME_Example/Assets.xcassets/AppIcon.appiconset/Contents.json +13 -0
- data/podTemplate/example/YKRPC_POD_NAME_Example/Assets.xcassets/Contents.json +6 -0
- data/podTemplate/example/YKRPC_POD_NAME_Example/Assets.xcassets/icon.imageset/Contents.json +21 -0
- data/podTemplate/example/YKRPC_POD_NAME_Example/Assets.xcassets/icon.imageset/icon.png +0 -0
- data/podTemplate/example/YKRPC_POD_NAME_Example/Base.lproj/LaunchScreen.storyboard +55 -0
- data/podTemplate/example/YKRPC_POD_NAME_Example/Base.lproj/Main.storyboard +65 -0
- data/podTemplate/example/YKRPC_POD_NAME_Example/Info.plist +25 -0
- data/podTemplate/example/YKRPC_POD_NAME_Example/SceneDelegate.swift +52 -0
- data/podTemplate/example/YKRPC_POD_NAME_Example/ViewController.swift +20 -0
- data/podTemplate/example/YKRPC_POD_NAME_Example.xcodeproj/project.pbxproj +362 -0
- data/podTemplate/example/YKRPC_POD_NAME_Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- data/podTemplate/example/YKRPC_POD_NAME_Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- data/podTemplate/example/YKRPC_POD_NAME_Example.xcodeproj/project.xcworkspace/xcuserdata/imac24inch.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/podTemplate/example/YKRPC_POD_NAME_Example.xcodeproj/xcuserdata/imac24inch.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
- data/podTemplate/objc/LICENSE +19 -0
- data/podTemplate/objc/README.md +60 -0
- data/podTemplate/objc/YKRPC_POD_NAME/Assets/Images.xcassets/.gitkeep +0 -0
- data/podTemplate/objc/YKRPC_POD_NAME/Private/.gitkeep +0 -0
- data/podTemplate/objc/YKRPC_POD_NAME/Public/YKRPC_POD_NAME.h +16 -0
- data/podTemplate/objc/YKRPC_POD_NAME/Public/YKRPC_POD_NAME.m +12 -0
- data/podTemplate/objc/YKRPC_POD_NAME.podspec +61 -0
- data/podTemplate/swift/LICENSE +19 -0
- data/podTemplate/swift/README.md +60 -0
- data/podTemplate/swift/YKRPC_POD_NAME/Assets/Images.xcassets/.gitkeep +0 -0
- data/podTemplate/swift/YKRPC_POD_NAME/Private/.gitkeep +0 -0
- data/podTemplate/swift/YKRPC_POD_NAME/Public/YKRPC_POD_NAME.swift +6 -0
- data/podTemplate/swift/YKRPC_POD_NAME.podspec +61 -0
- 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 @@
|
|
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,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
|
+
}
|
Binary file
|
@@ -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>
|