cocoapods-ykutility 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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>
|