89 Commits

Author SHA1 Message Date
Artem Kislitsyn ba3bff40b9 clean code 2014-11-21 18:50:08 +03:00
Artem Kislitsyn e05ef556e5 fix stryboard 2014-11-20 15:55:51 +03:00
Artem Kislitsyn 17402d0428 fix readme 2014-11-20 15:51:12 +03:00
Artem Kislitsyn 503cde01a7 clean project 2014-11-20 15:31:59 +03:00
Artem Kislitsyn 21fc1772fb fix tests 2014-11-17 14:17:22 +03:00
Artem Kislitsyn 3d1a827e9e rewrite tests 2014-11-17 13:17:10 +03:00
Artem Kislitsyn db30943244 readme update 2014-11-16 23:30:14 +03:00
Artem Kislitsyn 4ab0a82143 fix bugs 2014-11-15 14:26:30 +03:00
Artem Kislitsyn e6f87041b0 add setting manager 2014-11-14 18:14:55 +03:00
Artem Kislitsyn 0feda491a2 fixes 2014-11-13 19:45:19 +03:00
Artem Kislitsyn 1103152e0d setup app delegate 2014-11-13 18:08:25 +03:00
Artem Kislitsyn d4e90e990c fix dictionary serializtion 2014-11-13 16:18:09 +03:00
Artem Kislitsyn 85ebb07599 minor 2014-11-13 15:29:12 +03:00
Artem Kislitsyn 9ffa4f0cb8 minor 2014-11-13 15:08:56 +03:00
Artem Kislitsyn 45c2406fbb clean cache 2014-11-13 14:35:12 +03:00
Artem Kislitsyn 700f98effe refactor 2014-11-13 14:34:09 +03:00
Artem Kislitsyn 3e56028ea4 refactor 2014-11-12 19:13:44 +03:00
Artem Kislitsyn dec3d91e42 refactor 2014-11-11 19:33:38 +03:00
Artem Kislitsyn c7c1acc741 refactor 2014-11-11 13:54:52 +03:00
Artem Kislitsyn 1af7dcbbfd fix misspelling 2014-11-10 16:41:55 +03:00
Artem Kislitsyn c69dac49de clean an rename 2014-11-10 16:15:28 +03:00
Artem Kislitsyn d696da3975 clean and rename 2014-11-10 15:25:43 +03:00
Artem Kislitsyn 5e4659defb clean project 2014-11-08 09:07:00 +03:00
Artem Kislitsyn 287cc8744c rake 2014-11-08 06:02:16 +03:00
Artem Kislitsyn b6e01aba13 minor 2014-11-08 05:52:44 +03:00
Artem Kislitsyn 98c5249ded move 2014-11-07 22:42:02 +03:00
Artem Kislitsyn b830b211b5 fix storyboard 2014-11-07 20:16:15 +03:00
Artem Kislitsyn 5e43edd33c clean println 2014-11-07 17:07:15 +03:00
Artem Kislitsyn f017f66db0 sdk 2014-11-07 13:22:24 +03:00
Artem Kislitsyn a3aa546007 minor 2014-11-07 13:18:39 +03:00
Artem Kislitsyn e3e89a1ab5 minor 2014-11-07 13:18:21 +03:00
Artem Kislitsyn 2d84a2ee48 sdk 2014-11-07 13:11:12 +03:00
Artem Kislitsyn 645d8d61c0 rake 2014-11-07 12:54:13 +03:00
Artem Kislitsyn b7788e4c5f minor 2014-11-07 12:05:01 +03:00
Artem Kislitsyn 635e7faa34 rake 2014-11-07 11:17:48 +03:00
Artem Kislitsyn 5a5c5dcf4d rake 2014-11-07 11:15:02 +03:00
Artem Kislitsyn 8546874916 rakefile 2014-11-07 10:51:37 +03:00
Artem Kislitsyn dd547a3caa minor 2014-11-07 08:16:27 +03:00
Artem Kislitsyn 4ab0c2ea86 minor 2014-11-07 08:12:34 +03:00
Artem Kislitsyn 7d1f5975d1 minoe 2014-11-07 00:50:56 +03:00
Artem Kislitsyn 0119fad3a4 travis update 2014-11-07 00:42:53 +03:00
Artem Kislitsyn 9bcb4fc08c fix travis 2014-11-06 22:05:18 +03:00
Artem Kislitsyn 23c34310dc update readme 2014-11-06 22:03:41 +03:00
Artem Kislitsyn 6e6d7866f1 minor 2014-11-06 22:00:19 +03:00
Artem Kislitsyn 3c93bd1119 clean code 2014-11-06 21:54:27 +03:00
Artem Kislitsyn 1e29da03c4 fix specification plist 2014-11-06 21:43:25 +03:00
Artem Kislitsyn c2bd3fd5c3 clean code, refatctor 2014-11-06 18:35:36 +03:00
Artem Kislitsyn 182a3f1f0f fix images default states 2014-11-06 18:25:52 +03:00
Artem Kislitsyn e233dabdfe fix title 2014-11-06 17:39:04 +03:00
Artem Kislitsyn 4da43bcd98 fix color for each state 2014-11-06 17:15:18 +03:00
Artem Kislitsyn d51e255bc8 fix travis file 2014-11-06 15:29:40 +03:00
Artem Kislitsyn 0fbd37ca95 shared sheme 2014-11-06 15:22:09 +03:00
Artem Kislitsyn 1c741d54a7 fix 2014-11-06 15:00:01 +03:00
Artem Kislitsyn 975aaf7010 minor 2014-11-06 14:47:30 +03:00
Artem Kislitsyn 91ef1690aa travis yml 2014-11-06 14:04:27 +03:00
Artem Kislitsyn dd6686a287 yesterday update readme fix and fix some bugs 2014-11-06 06:47:27 +03:00
Artem Kislitsyn 43b854d72f update 2014-11-05 18:25:14 +03:00
Artem Kislitsyn 4dd9675c11 update readme 2014-11-05 18:22:29 +03:00
Artem Kislitsyn 8d82dff58b fix serialization images bug 2014-11-05 15:44:48 +03:00
Artem Kislitsyn 004f42136a change format 2014-11-05 12:20:21 +03:00
Artem Kislitsyn 9d46f86b58 fix plist fix bugs 2014-11-05 11:44:37 +03:00
Artem Kislitsyn 9eccb3272a plist update 2014-11-04 19:35:10 +03:00
Artem Kislitsyn b56be3a215 minor fix 2014-11-04 19:32:56 +03:00
Artem Kislitsyn afdc370b5c minor 2014-11-04 19:26:10 +03:00
Artem Kislitsyn 030f08537c Deseraialize to ApperanceObject 2014-11-04 18:11:04 +03:00
Artem Kislitsyn 296859d7ff dictionary serilizator 2014-11-04 12:54:25 +03:00
Artem Kislitsyn 3a116e77ba Apearance seriliztion with tests 2014-11-03 20:48:17 +03:00
Artem Kislitsyn 984da055fc add serialization controlStateValue 2014-11-03 16:49:03 +03:00
Artem Kislitsyn 56d331ffeb test control 2014-11-03 12:25:59 +03:00
Artem Kislitsyn cba3741ad0 system types to dictionary 2014-11-01 12:58:44 +03:00
Artem Kislitsyn 16f519c8a4 font deseraliation 2014-10-31 21:10:58 +03:00
Artem Kislitsyn 73c9d6d5ec deserealistaion method 2014-10-31 19:16:17 +03:00
Artem Kislitsyn eaeb885f19 serilization 2014-10-31 15:13:11 +03:00
Artem Kislitsyn ddf851bf46 fix bugs 2014-10-31 11:36:55 +03:00
Artem Kislitsyn be076751c8 fix testst 2014-10-30 20:12:59 +03:00
Artem Kislitsyn 0f68711a98 fix smaltite state 2014-10-30 20:07:20 +03:00
Artem Kislitsyn a30e5388e5 fix images 2014-10-30 19:07:47 +03:00
Artem Kislitsyn d27d437e93 clean code 2014-10-30 14:19:37 +03:00
Artem Kislitsyn 6e1a2e4908 fix minor 2014-10-29 21:54:36 +03:00
Artem Kislitsyn 46467d44d3 part setting refactored 2014-10-29 21:52:20 +03:00
Artem Kislitsyn 78d6ad7769 reimplement some propertice of Adaptive controller 2014-10-29 21:14:25 +03:00
Artem Kislitsyn e6a282db55 fix issue 2014-10-29 18:22:55 +03:00
Artem Kislitsyn a25dc67f0b minor 2014-10-29 16:37:36 +03:00
Artem Kislitsyn 35a949661a minor 2014-10-28 21:08:31 +03:00
Artem Kislitsyn 42738ac663 test for new functionality 2014-10-28 19:08:47 +03:00
Artem Kislitsyn d744048ae8 redesign arhichecture 2014-10-23 09:58:50 +04:00
Artem Kislitsyn 4ee86d0bba fizx protocols 2014-10-22 12:43:32 +04:00
Artem Kislitsyn 6b768ba24b serizable protocol 2014-10-22 12:32:16 +04:00
Artem Kislitsyn 40b465d515 new structur 2014-10-22 11:47:19 +04:00
185 changed files with 7555 additions and 1991 deletions
-67
View File
@@ -1,67 +0,0 @@
# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
## Build generated
build/
DerivedData/
## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/
## Other
*.moved-aside
*.xccheckout
*.xcscmblueprint
## Obj-C/Swift specific
*.hmap
*.ipa
*.dSYM.zip
*.dSYM
## Playgrounds
timeline.xctimeline
playground.xcworkspace
# Swift Package Manager
#
# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
# Packages/
# Package.pins
.build/
# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
Pods/
# Carthage
#
# Add this line if you want to avoid checking in source code from Carthage dependencies.
Carthage/Checkouts
Carthage/Build
# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/#source-control
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
-13
View File
@@ -1,13 +0,0 @@
osx_image: xcode9.2
language: objective-c
xcode_project: adaptive-tab-bar/SamplesAdaptiveController.xcworkspace
scheme: example
xcode_sdk: iphonesimulator11.2
# SWIFT_VERSION: 4.0
# whitelist
branches:
only:
- master
+2 -2
View File
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'AdaptiveController'
s.version = '1.1.0'
s.version = '0.0.1'
s.license = { :type => 'MIT' }
s.homepage = 'https://github.com/Ramotion/adaptive-tab-bar'
s.authors = { 'Artem Kislitsyn, Yuri Vasilenko' => 'yuri.v@ramotion.com' }
@@ -9,4 +9,4 @@ Pod::Spec.new do |s|
s.source_files = 'AdaptiveController/AdaptiveController/*.{h,swift}'
s.frameworks = 'Swift'
s.requires_arc = true
end
end
@@ -7,27 +7,66 @@
objects = {
/* Begin PBXBuildFile section */
6A156E3E1A08B38E002A69AD /* DictioanarySerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A156E3D1A08B38E002A69AD /* DictioanarySerializer.swift */; };
6A36BD4219FFDEDA00C19F61 /* ControlStateValueTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A36BD4119FFDEDA00C19F61 /* ControlStateValueTest.swift */; };
6A3E3A1C19E05E5B00C7504B /* AdaptiveLaunchesState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A3E3A1B19E05E5B00C7504B /* AdaptiveLaunchesState.swift */; };
6A3ED0CA19ED02DA006F06DD /* DateExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A3ED0C919ED02DA006F06DD /* DateExtension.swift */; };
6A3ED0CC19ED058F006F06DD /* AdaptiveDateStateTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A3ED0CB19ED058F006F06DD /* AdaptiveDateStateTest.swift */; };
6A3ED0CE19ED05D8006F06DD /* AdaptiveLaunchesStateTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A3ED0CD19ED05D8006F06DD /* AdaptiveLaunchesStateTest.swift */; };
6AAE857719D329C6005672CA /* AdaptiveButtonAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AAE857319D329C6005672CA /* AdaptiveButtonAppearance.swift */; };
6AAE857819D329C6005672CA /* AdaptiveButtonsStateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AAE857419D329C6005672CA /* AdaptiveButtonsStateManager.swift */; };
6AAE857919D329C6005672CA /* AdaptiveDateState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AAE857519D329C6005672CA /* AdaptiveDateState.swift */; };
6AAE857A19D329C6005672CA /* AdaptiveState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AAE857619D329C6005672CA /* AdaptiveState.swift */; };
6ACDAABA1A1508BA0027A658 /* AppearenceSettingManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ACDAAB91A1508BA0027A658 /* AppearenceSettingManager.swift */; };
6AD1EC2619EFA9BA003F36A4 /* ControlStateValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AD1EC2519EFA9BA003F36A4 /* ControlStateValue.swift */; };
6AD1EC2919EFB8E2003F36A4 /* ControlStateProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AD1EC2819EFB8E2003F36A4 /* ControlStateProtocol.swift */; };
6AD1EC2B19F1165E003F36A4 /* TestTabBarItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AD1EC2A19F1165E003F36A4 /* TestTabBarItem.swift */; };
6AD4002919F792FA00630034 /* ControlStateAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AD4002819F792FA00630034 /* ControlStateAppearance.swift */; };
6AD4002B19F7A0B800630034 /* AppearanceSerializationProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AD4002A19F7A0B800630034 /* AppearanceSerializationProtocol.swift */; };
6AE723351A04EE6F003416B6 /* ControlStateAppearanceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AE723341A04EE6F003416B6 /* ControlStateAppearanceTest.swift */; };
6AE723381A04F7AE003416B6 /* AdaptiveDateState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AAE857519D329C6005672CA /* AdaptiveDateState.swift */; };
6AE723391A04F7B1003416B6 /* AdaptiveLaunchesState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A3E3A1B19E05E5B00C7504B /* AdaptiveLaunchesState.swift */; };
6AE7233A1A04F7B4003416B6 /* AdaptiveButtonsStateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AAE857419D329C6005672CA /* AdaptiveButtonsStateManager.swift */; };
6AE7233B1A04F7B6003416B6 /* AdaptiveButtonAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AAE857319D329C6005672CA /* AdaptiveButtonAppearance.swift */; };
6AE7233C1A04F7BA003416B6 /* ControlStateProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AD1EC2819EFB8E2003F36A4 /* ControlStateProtocol.swift */; };
6AE7233E1A04F7BF003416B6 /* AppearanceSerializationProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AD4002A19F7A0B800630034 /* AppearanceSerializationProtocol.swift */; };
6AE7233F1A04F7C3003416B6 /* ControlStateValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AD1EC2519EFA9BA003F36A4 /* ControlStateValue.swift */; };
6AE723401A04F7E5003416B6 /* AdaptiveState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AAE857619D329C6005672CA /* AdaptiveState.swift */; };
6AE723411A04F7ED003416B6 /* ControlStateAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AD4002819F792FA00630034 /* ControlStateAppearance.swift */; };
6AE723451A07C8E1003416B6 /* AdaptiveButtonAppearanceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AE723441A07C8E1003416B6 /* AdaptiveButtonAppearanceTest.swift */; };
6AF450671A10F99A00AC30A4 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AF450661A10F99A00AC30A4 /* Constants.swift */; };
6AFB70291A19F53E00221E66 /* AppearenceSettingManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ACDAAB91A1508BA0027A658 /* AppearenceSettingManager.swift */; };
6AFB702A1A19F54C00221E66 /* DictioanarySerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A156E3D1A08B38E002A69AD /* DictioanarySerializer.swift */; };
6AFBC6D719D313D600D42578 /* AdaptiveController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AFBC6D619D313D600D42578 /* AdaptiveController.h */; settings = {ATTRIBUTES = (Public, ); }; };
6AFBC6E119D313D600D42578 /* AdaptiveControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AFBC6E019D313D600D42578 /* AdaptiveControllerTests.swift */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
6A156E3D1A08B38E002A69AD /* DictioanarySerializer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DictioanarySerializer.swift; sourceTree = "<group>"; };
6A36BD4119FFDEDA00C19F61 /* ControlStateValueTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlStateValueTest.swift; sourceTree = "<group>"; };
6A3E3A1B19E05E5B00C7504B /* AdaptiveLaunchesState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdaptiveLaunchesState.swift; sourceTree = "<group>"; };
6A3ED0C919ED02DA006F06DD /* DateExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = DateExtension.swift; path = "../../Samples/adaptive-dates-tabbar/adaptive-tab-bar/DateExtension.swift"; sourceTree = "<group>"; };
6A3ED0CB19ED058F006F06DD /* AdaptiveDateStateTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdaptiveDateStateTest.swift; sourceTree = "<group>"; };
6A3ED0CD19ED05D8006F06DD /* AdaptiveLaunchesStateTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdaptiveLaunchesStateTest.swift; sourceTree = "<group>"; };
6AAE857319D329C6005672CA /* AdaptiveButtonAppearance.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdaptiveButtonAppearance.swift; sourceTree = "<group>"; };
6AAE857419D329C6005672CA /* AdaptiveButtonsStateManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdaptiveButtonsStateManager.swift; sourceTree = "<group>"; };
6AAE857519D329C6005672CA /* AdaptiveDateState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdaptiveDateState.swift; sourceTree = "<group>"; };
6AAE857619D329C6005672CA /* AdaptiveState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdaptiveState.swift; sourceTree = "<group>"; };
6ACDAAB91A1508BA0027A658 /* AppearenceSettingManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppearenceSettingManager.swift; sourceTree = "<group>"; };
6AD1EC2519EFA9BA003F36A4 /* ControlStateValue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlStateValue.swift; sourceTree = "<group>"; };
6AD1EC2819EFB8E2003F36A4 /* ControlStateProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlStateProtocol.swift; sourceTree = "<group>"; };
6AD1EC2A19F1165E003F36A4 /* TestTabBarItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestTabBarItem.swift; sourceTree = "<group>"; };
6AD4002819F792FA00630034 /* ControlStateAppearance.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlStateAppearance.swift; sourceTree = "<group>"; };
6AD4002A19F7A0B800630034 /* AppearanceSerializationProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppearanceSerializationProtocol.swift; sourceTree = "<group>"; };
6AE723341A04EE6F003416B6 /* ControlStateAppearanceTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlStateAppearanceTest.swift; sourceTree = "<group>"; };
6AE723441A07C8E1003416B6 /* AdaptiveButtonAppearanceTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdaptiveButtonAppearanceTest.swift; sourceTree = "<group>"; };
6AF450661A10F99A00AC30A4 /* Constants.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = "<group>"; };
6AFBC6D119D313D600D42578 /* AdaptiveController.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AdaptiveController.framework; sourceTree = BUILT_PRODUCTS_DIR; };
6AFBC6D519D313D600D42578 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
6AFBC6D619D313D600D42578 /* AdaptiveController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AdaptiveController.h; sourceTree = "<group>"; };
6AFBC6DC19D313D600D42578 /* AdaptiveControllerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AdaptiveControllerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
6AFBC6DF19D313D600D42578 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
6AFBC6E019D313D600D42578 /* AdaptiveControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveControllerTests.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -38,9 +77,24 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
6AFBC6D919D313D600D42578 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
6A156E3C1A08B322002A69AD /* Serializator */ = {
isa = PBXGroup;
children = (
6A156E3D1A08B38E002A69AD /* DictioanarySerializer.swift */,
);
name = Serializator;
sourceTree = "<group>";
};
6AAE857B19D329E0005672CA /* CustomAdaptiveStates */ = {
isa = PBXGroup;
children = (
@@ -63,6 +117,7 @@
children = (
6AAE857319D329C6005672CA /* AdaptiveButtonAppearance.swift */,
6AAE857419D329C6005672CA /* AdaptiveButtonsStateManager.swift */,
6ACDAAB91A1508BA0027A658 /* AppearenceSettingManager.swift */,
);
name = Appearance;
sourceTree = "<group>";
@@ -70,16 +125,26 @@
6AD1EC2719EFB521003F36A4 /* ControlStates */ = {
isa = PBXGroup;
children = (
6AD1EC2819EFB8E2003F36A4 /* ControlStateProtocol.swift */,
6AD1EC2519EFA9BA003F36A4 /* ControlStateValue.swift */,
6AD4002819F792FA00630034 /* ControlStateAppearance.swift */,
);
name = ControlStates;
sourceTree = "<group>";
};
6AD4002C19F7A12200630034 /* Protocols */ = {
isa = PBXGroup;
children = (
6AD4002A19F7A0B800630034 /* AppearanceSerializationProtocol.swift */,
6AD1EC2819EFB8E2003F36A4 /* ControlStateProtocol.swift */,
);
name = Protocols;
sourceTree = "<group>";
};
6AFBC6C719D313D600D42578 = {
isa = PBXGroup;
children = (
6AFBC6D319D313D600D42578 /* AdaptiveController */,
6AFBC6DD19D313D600D42578 /* AdaptiveControllerTests */,
6AFBC6D219D313D600D42578 /* Products */,
);
sourceTree = "<group>";
@@ -88,6 +153,7 @@
isa = PBXGroup;
children = (
6AFBC6D119D313D600D42578 /* AdaptiveController.framework */,
6AFBC6DC19D313D600D42578 /* AdaptiveControllerTests.xctest */,
);
name = Products;
sourceTree = "<group>";
@@ -95,6 +161,9 @@
6AFBC6D319D313D600D42578 /* AdaptiveController */ = {
isa = PBXGroup;
children = (
6AF450661A10F99A00AC30A4 /* Constants.swift */,
6A156E3C1A08B322002A69AD /* Serializator */,
6AD4002C19F7A12200630034 /* Protocols */,
6AD1EC2719EFB521003F36A4 /* ControlStates */,
6AD1EC2319EFA903003F36A4 /* Appearance */,
6AAE857C19D32A14005672CA /* AdaptiveStates */,
@@ -113,6 +182,30 @@
name = "Supporting Files";
sourceTree = "<group>";
};
6AFBC6DD19D313D600D42578 /* AdaptiveControllerTests */ = {
isa = PBXGroup;
children = (
6AE723441A07C8E1003416B6 /* AdaptiveButtonAppearanceTest.swift */,
6AE723341A04EE6F003416B6 /* ControlStateAppearanceTest.swift */,
6A3ED0C919ED02DA006F06DD /* DateExtension.swift */,
6AFBC6E019D313D600D42578 /* AdaptiveControllerTests.swift */,
6A3ED0CB19ED058F006F06DD /* AdaptiveDateStateTest.swift */,
6A3ED0CD19ED05D8006F06DD /* AdaptiveLaunchesStateTest.swift */,
6AD1EC2A19F1165E003F36A4 /* TestTabBarItem.swift */,
6A36BD4119FFDEDA00C19F61 /* ControlStateValueTest.swift */,
6AFBC6DE19D313D600D42578 /* Supporting Files */,
);
path = AdaptiveControllerTests;
sourceTree = "<group>";
};
6AFBC6DE19D313D600D42578 /* Supporting Files */ = {
isa = PBXGroup;
children = (
6AFBC6DF19D313D600D42578 /* Info.plist */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
@@ -145,28 +238,46 @@
productReference = 6AFBC6D119D313D600D42578 /* AdaptiveController.framework */;
productType = "com.apple.product-type.framework";
};
6AFBC6DB19D313D600D42578 /* AdaptiveControllerTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 6AFBC6E719D313D600D42578 /* Build configuration list for PBXNativeTarget "AdaptiveControllerTests" */;
buildPhases = (
6AFBC6D819D313D600D42578 /* Sources */,
6AFBC6D919D313D600D42578 /* Frameworks */,
6AFBC6DA19D313D600D42578 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = AdaptiveControllerTests;
productName = AdaptiveControllerTests;
productReference = 6AFBC6DC19D313D600D42578 /* AdaptiveControllerTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
6AFBC6C819D313D600D42578 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1020;
LastUpgradeCheck = 0600;
ORGANIZATIONNAME = Ramotion;
TargetAttributes = {
6AFBC6D019D313D600D42578 = {
CreatedOnToolsVersion = 6.0.1;
LastSwiftMigration = 1020;
};
6AFBC6DB19D313D600D42578 = {
CreatedOnToolsVersion = 6.0.1;
};
};
};
buildConfigurationList = 6AFBC6CB19D313D600D42578 /* Build configuration list for PBXProject "AdaptiveController" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = en;
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 6AFBC6C719D313D600D42578;
productRefGroup = 6AFBC6D219D313D600D42578 /* Products */;
@@ -174,6 +285,7 @@
projectRoot = "";
targets = (
6AFBC6D019D313D600D42578 /* AdaptiveController */,
6AFBC6DB19D313D600D42578 /* AdaptiveControllerTests */,
);
};
/* End PBXProject section */
@@ -186,6 +298,13 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
6AFBC6DA19D313D600D42578 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -193,16 +312,47 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
6ACDAABA1A1508BA0027A658 /* AppearenceSettingManager.swift in Sources */,
6AAE857819D329C6005672CA /* AdaptiveButtonsStateManager.swift in Sources */,
6AD4002919F792FA00630034 /* ControlStateAppearance.swift in Sources */,
6A3E3A1C19E05E5B00C7504B /* AdaptiveLaunchesState.swift in Sources */,
6AAE857719D329C6005672CA /* AdaptiveButtonAppearance.swift in Sources */,
6AD4002B19F7A0B800630034 /* AppearanceSerializationProtocol.swift in Sources */,
6AD1EC2619EFA9BA003F36A4 /* ControlStateValue.swift in Sources */,
6AAE857919D329C6005672CA /* AdaptiveDateState.swift in Sources */,
6AF450671A10F99A00AC30A4 /* Constants.swift in Sources */,
6AD1EC2919EFB8E2003F36A4 /* ControlStateProtocol.swift in Sources */,
6A156E3E1A08B38E002A69AD /* DictioanarySerializer.swift in Sources */,
6AAE857A19D329C6005672CA /* AdaptiveState.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
6AFBC6D819D313D600D42578 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
6AE723411A04F7ED003416B6 /* ControlStateAppearance.swift in Sources */,
6AE723351A04EE6F003416B6 /* ControlStateAppearanceTest.swift in Sources */,
6AE7233B1A04F7B6003416B6 /* AdaptiveButtonAppearance.swift in Sources */,
6AD1EC2B19F1165E003F36A4 /* TestTabBarItem.swift in Sources */,
6AE723391A04F7B1003416B6 /* AdaptiveLaunchesState.swift in Sources */,
6A3ED0CE19ED05D8006F06DD /* AdaptiveLaunchesStateTest.swift in Sources */,
6AE7233F1A04F7C3003416B6 /* ControlStateValue.swift in Sources */,
6AFB70291A19F53E00221E66 /* AppearenceSettingManager.swift in Sources */,
6AE7233E1A04F7BF003416B6 /* AppearanceSerializationProtocol.swift in Sources */,
6AE723451A07C8E1003416B6 /* AdaptiveButtonAppearanceTest.swift in Sources */,
6AFB702A1A19F54C00221E66 /* DictioanarySerializer.swift in Sources */,
6A3ED0CA19ED02DA006F06DD /* DateExtension.swift in Sources */,
6A3ED0CC19ED058F006F06DD /* AdaptiveDateStateTest.swift in Sources */,
6AFBC6E119D313D600D42578 /* AdaptiveControllerTests.swift in Sources */,
6A36BD4219FFDEDA00C19F61 /* ControlStateValueTest.swift in Sources */,
6AE7233C1A04F7BA003416B6 /* ControlStateProtocol.swift in Sources */,
6AE723401A04F7E5003416B6 /* AdaptiveState.swift in Sources */,
6AE723381A04F7AE003416B6 /* AdaptiveDateState.swift in Sources */,
6AE7233A1A04F7B4003416B6 /* AdaptiveButtonsStateManager.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
@@ -211,28 +361,17 @@
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = YES;
CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
@@ -240,10 +379,8 @@
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
@@ -262,7 +399,6 @@
SDKROOT = iphoneos;
SWIFT_INCLUDE_PATHS = "\"$(SRCROOT)/AdaptiveController/\"";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2";
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/AdaptiveController/\"/**";
VERSIONING_SYSTEM = "apple-generic";
@@ -275,28 +411,17 @@
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = YES;
CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
@@ -306,7 +431,6 @@
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
@@ -317,8 +441,6 @@
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SWIFT_INCLUDE_PATHS = "\"$(SRCROOT)/AdaptiveController/\"";
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2";
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/AdaptiveController/\"/**";
VALIDATE_PRODUCT = YES;
@@ -332,7 +454,6 @@
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ENABLE_MODULES = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
@@ -340,12 +461,11 @@
INFOPLIST_FILE = AdaptiveController/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "ramotion.$(PRODUCT_NAME:rfc1034identifier)";
OTHER_SWIFT_FLAGS = "";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_INCLUDE_PATHS = "";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
USER_HEADER_SEARCH_PATHS = "";
};
name = Debug;
@@ -355,7 +475,6 @@
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ENABLE_MODULES = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
@@ -363,15 +482,44 @@
INFOPLIST_FILE = AdaptiveController/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "ramotion.$(PRODUCT_NAME:rfc1034identifier)";
OTHER_SWIFT_FLAGS = "";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_INCLUDE_PATHS = "";
SWIFT_VERSION = 5.0;
USER_HEADER_SEARCH_PATHS = "";
};
name = Release;
};
6AFBC6E819D313D600D42578 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
);
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
INFOPLIST_FILE = AdaptiveControllerTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
6AFBC6E919D313D600D42578 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
);
INFOPLIST_FILE = AdaptiveControllerTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
@@ -393,6 +541,15 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
6AFBC6E719D313D600D42578 /* Build configuration list for PBXNativeTarget "AdaptiveControllerTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
6AFBC6E819D313D600D42578 /* Debug */,
6AFBC6E919D313D600D42578 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 6AFBC6C819D313D600D42578 /* Project object */;
@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6AFBC6D019D313D600D42578"
BuildableName = "AdaptiveController.framework"
BlueprintName = "AdaptiveController"
ReferencedContainer = "container:AdaptiveController.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6A5558B219E2BAB100ED3B5C"
BuildableName = "example-count-launches-adaptive-tabbar.app"
BlueprintName = "example-count-launches-adaptive-tabbar"
ReferencedContainer = "container:../Samples/adaptive-launches-tabbar/example-count-launches-adaptive-tabbar.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6AD5A2F219C6C95E00606826"
BuildableName = "example-date-adaptive-tab-bar.app"
BlueprintName = "example-date-adaptive-tab-bar"
ReferencedContainer = "container:../Samples/adaptive-dates-tabbar/example-date-adaptive-tab-bar.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6AFBC6D019D313D600D42578"
BuildableName = "AdaptiveController.framework"
BlueprintName = "AdaptiveController"
ReferencedContainer = "container:AdaptiveController.xcodeproj">
</BuildableReference>
</MacroExpansion>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6AFBC6D019D313D600D42578"
BuildableName = "AdaptiveController.framework"
BlueprintName = "AdaptiveController"
ReferencedContainer = "container:AdaptiveController.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6AFBC6D019D313D600D42578"
BuildableName = "AdaptiveController.framework"
BlueprintName = "AdaptiveController"
ReferencedContainer = "container:AdaptiveController.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
@@ -0,0 +1,96 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6AFBC6DB19D313D600D42578"
BuildableName = "AdaptiveControllerTests.xctest"
BlueprintName = "AdaptiveControllerTests"
ReferencedContainer = "container:AdaptiveController.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6AFBC6DB19D313D600D42578"
BuildableName = "AdaptiveControllerTests.xctest"
BlueprintName = "AdaptiveControllerTests"
ReferencedContainer = "container:AdaptiveController.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6AFBC6DB19D313D600D42578"
BuildableName = "AdaptiveControllerTests.xctest"
BlueprintName = "AdaptiveControllerTests"
ReferencedContainer = "container:AdaptiveController.xcodeproj">
</BuildableReference>
</MacroExpansion>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6AFBC6DB19D313D600D42578"
BuildableName = "AdaptiveControllerTests.xctest"
BlueprintName = "AdaptiveControllerTests"
ReferencedContainer = "container:AdaptiveController.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6AFBC6DB19D313D600D42578"
BuildableName = "AdaptiveControllerTests.xctest"
BlueprintName = "AdaptiveControllerTests"
ReferencedContainer = "container:AdaptiveController.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>AdaptiveController.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
<key>AdaptiveControllerTests.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>1</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>6AFBC6D019D313D600D42578</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>6AFBC6DB19D313D600D42578</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>
@@ -0,0 +1,63 @@
//
// AdaptiveButtonApperance.swift
// AdaptiveTabBarControllerSample
//
// Created by Arcilite on 18.09.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
public class AdaptiveButtonAppearance: AppearanceSerializationProtocol{
public typealias StateObject = ControlStateValue
public typealias DictionaryObject = Dictionary <String,AnyObject>
public var stateDictionary:Dictionary <StateKey,ControlStateValue> = Dictionary <StateKey,ControlStateValue>()
public init(){
}
public init (values:Dictionary<StateKey,ControlStateValue>) {
stateDictionary = values
}
public convenience init(states:Dictionary<StateKey,ControlStateValue>) {
self.init(values:states)
}
public func setObjectDictionary(dictionary:Dictionary <String,DictionaryObject>){
var controlStatesDictionary = Dictionary<StateKey,ControlStateValue>()
for (key,object ) in dictionary{
let appearanceDictionary = object as Dictionary <String,DictionaryObject>
let appearanceObject = ControlStateValue()
appearanceObject.setObjectDictionary(appearanceDictionary)
controlStatesDictionary.updateValue(appearanceObject, forKey: StateKey(rawValue: key)!)
}
stateDictionary = controlStatesDictionary
}
public func getObjectDictionary() -> Dictionary<String,DictionaryObject>{
var controlStatesDictionary = Dictionary<String,DictionaryObject>()
for (key,object ) in stateDictionary{
let appearance = object as ControlStateValue
let appearanceDictionary = appearance.getObjectDictionary()
controlStatesDictionary.updateValue(appearanceDictionary, forKey: key.rawValue)
}
return controlStatesDictionary
}
}
@@ -0,0 +1,90 @@
//
// AdaptiveButtonsStateManager.swift
// AdaptiveTabBarControllerSample
//
// Created by Arcilite on 18.09.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
@objc public protocol AdaptiveApperanceProtocol {
func setFontToAdaptiveButton(font: UIFont , controlState:UIControlState)
//optional func setFontToAdaptiveButton(font: UIFont)
optional func setTitleToAdaptiveButton(text: NSString)
optional func setImageToAdaptiveButton(image: UIImage?)
optional func setHighlightedToAdaptiveButton(image: UIImage?)
optional func setBackgroundImageToAdaptiveButton(image: UIImage?)
optional func setSelectedImageToAdaptiveButton(image: UIImage?)
optional func setImageInsetsToAdaptiveButton(insets: UIEdgeInsets)
optional func setTitleOffsetToAdaptiveButton(offset: UIOffset)
//optional func setTitleColorToAdaptiveButton(titleColor: UIColor)
optional func setTitleColorToAdaptiveButton(color: UIColor, controlState:UIControlState)
}
public class AdaptiveButtonsStateManager <AdaptiveStateClass: AdaptiveState> {
public class func setupButtonsAppearanceFromState(adaptiveState:AdaptiveStateClass,buttonsAray:[AdaptiveApperanceProtocol],buttonsAppearances:[AdaptiveButtonAppearance]){
var state = adaptiveState.currentItemState
var countElements = buttonsAray.count > buttonsAppearances.count ? buttonsAppearances.count : buttonsAray.count
for var index = 0; index < countElements; ++index {
var button :AdaptiveApperanceProtocol = buttonsAray[index]
var buttonApperance = buttonsAppearances[index]
if let controlStateValue = buttonApperance.stateDictionary[state!] {
let normalStateAppearenceObject = controlStateValue.controlStates[UIControlState.Normal.rawValue]
if let title = normalStateAppearenceObject?.title {
button.setTitleToAdaptiveButton?(title)
}
if let imageName = normalStateAppearenceObject?.imageName?{
if let image = UIImage(named: imageName) {
button.setImageToAdaptiveButton?(image)
}
}
if let backgroundImage = normalStateAppearenceObject?.backgroundImage {
button.setBackgroundImageToAdaptiveButton?(backgroundImage)
}
if let imageInset = normalStateAppearenceObject?.imageInsets{
button.setImageInsetsToAdaptiveButton?(imageInset)
}
if let titleOffset = normalStateAppearenceObject?.titleOffset {
button.setTitleOffsetToAdaptiveButton?(titleOffset)
}
for (key, controlStateValue) in controlStateValue.controlStates{
if let titleFont = controlStateValue.font{
button.setFontToAdaptiveButton(titleFont , controlState:UIControlState(key))
}
if let titleColor = controlStateValue.titleColor{
button.setTitleColorToAdaptiveButton?(titleColor, controlState:UIControlState(key) )
}
}
}
}
}
}
@@ -0,0 +1,52 @@
//
// AdaptiveDateState.swift
// AdaptiveTabBarControllerSample
//
// Created by Arcilite on 18.09.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
public let kSmallTitleAdaptiveState = "kSmallTitleAdaptiveState"
public let kImageAdaptiveState = "kImageAdaptiveState"
public class AdaptiveDateState: AdaptiveState {
public convenience init(installDate:NSDate, currentDate:NSDate,countDaysToSmallTextState:Int,countDaysToImageState:Int) {
self.init()
var remainsDays = self.daysBetweenDates(installDate,currentDate: currentDate)
self.currentItemState = self.stateRemainDays(remainsDays,countDaysToSmallTextState:countDaysToSmallTextState,countDaysToImageState:countDaysToImageState)
}
func daysBetweenDates(installDate:NSDate, currentDate:NSDate) -> Int{
let cal = NSCalendar.currentCalendar()
let unit:NSCalendarUnit = .DayCalendarUnit
let components = cal.components(unit, fromDate: installDate, toDate: currentDate, options: nil)
return components.day+1;
}
func stateRemainDays (remainDays:Int,countDaysToSmallTextState:Int,countDaysToImageState:Int)->StateType{
var mode:StateType = .DefaultAdaptiveState
if remainDays > countDaysToSmallTextState && remainDays < countDaysToImageState{
mode = .SmallTitleAdaptiveState
}else if remainDays > countDaysToImageState {
mode = .ImageAdaptiveState
}
return mode
}
}
@@ -0,0 +1,44 @@
//
// AdaaptiveLaunchesState.swift
// AdaptiveController
//
// Created by Arcilite on 04.10.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
typealias StateType = AdaptiveStateEnum
public class AdaptiveLaunchesState : AdaptiveState {
typealias StateType = AdaptiveStateEnum
override init(){
}
public convenience init(curentCountLaunches:Int,countLaunchesToSmallTextState:Int,countLaunchesToImageState:Int){
self.init()
self.currentItemState = stateRemainDays(curentCountLaunches,countLaunchesToSmallTextState: countLaunchesToSmallTextState,countLaunchesToImageState: countLaunchesToImageState);
}
internal func stateRemainDays (curentCountLaunches:Int,countLaunchesToSmallTextState:Int,countLaunchesToImageState:Int)->StateType{
var mode:StateType = .DefaultAdaptiveState
if curentCountLaunches > countLaunchesToSmallTextState && curentCountLaunches < countLaunchesToImageState{
mode = .SmallTitleAdaptiveState
}else if curentCountLaunches > countLaunchesToImageState {
mode = .ImageAdaptiveState
}
return mode;
}
}
@@ -0,0 +1,33 @@
//
// AdaptiveController.swift
// AdaptiveTabBarControllerSample
//
// Created by Arcilite on 17.09.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
public let kDefaultAdaptiveState:String = "kDefaultAdaptiveState"
public enum AdaptiveStateEnum:String{
case DefaultAdaptiveState = "kDefaultAdaptiveState"
case SmallTitleAdaptiveState = "kSmallTitleAdaptiveState"
case ImageAdaptiveState = "kImageAdaptiveState"
}
public typealias StateKey = AdaptiveStateEnum
public class AdaptiveState {
public typealias StateType = AdaptiveStateEnum
var currentItemState:StateType?
init(){
}
}
@@ -0,0 +1,17 @@
//
// AppearanceSerializationProtocol.swift
// AdaptiveController
//
// Created by Arcilite on 22.10.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import Foundation
protocol AppearanceSerializationProtocol {
typealias DictionaryObject
func getObjectDictionary() -> Dictionary<String,DictionaryObject>
func setObjectDictionary(dictionary:Dictionary<String,DictionaryObject>)
}
@@ -0,0 +1,51 @@
//
// AppearenceSettingManager.swift
// AdaptiveController
//
// Created by Arcilite on 13.11.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import Foundation
import UIKit
public class AppearenceSettingManager{
private var defaultAppearencesStyles:Dictionary<StateKey,ControlStateValue>
public init(){
defaultAppearencesStyles = Dictionary<StateKey,ControlStateValue>()
}
public init(stylesAppearances:Dictionary<StateKey,ControlStateValue>){
defaultAppearencesStyles = stylesAppearances
}
public func defaultStyleSettingsForNormalState(state:StateKey, titleOffset:UIOffset, imageInsets:UIEdgeInsets, titleColor:UIColor, font:UIFont, backgroundColor:UIColor ){
var controlDefaultStyleStateAppearence = ControlStateAppearance()
controlDefaultStyleStateAppearence.titleColor = titleColor
controlDefaultStyleStateAppearence.imageInsets = imageInsets
controlDefaultStyleStateAppearence.font = font
controlDefaultStyleStateAppearence.backgroundColor = backgroundColor
controlDefaultStyleStateAppearence.titleOffset = titleOffset
let controlStatesValues = [UIControlState.Normal.rawValue:controlDefaultStyleStateAppearence]
let controlStateValue = ControlStateValue(values: controlStatesValues)
defaultAppearencesStyles.updateValue(controlStateValue,forKey:state)
}
public func defaultStyleValuesForNormalState(state:StateKey, title:String, imageName:String) -> ControlStateValue {
var defaultStateValue = defaultAppearencesStyles[state] as ControlStateValue?
var normalDefaultAppearance = defaultStateValue?.controlStates[UIControlState.Normal.rawValue]
var controlSmallTitleStyleStateAppearence = ControlStateAppearance(appearanceStyle:normalDefaultAppearance)
controlSmallTitleStyleStateAppearence.imageName = imageName
controlSmallTitleStyleStateAppearence.title = title
let controSmallTitleStatesValues = [UIControlState.Normal.rawValue:controlSmallTitleStyleStateAppearence]
let controlSmallTitleStateValue = ControlStateValue(values: controSmallTitleStatesValues)
return controlSmallTitleStateValue
}
}
@@ -0,0 +1,25 @@
//
// Constants.swift
// AdaptiveController
//
// Created by Arcilite on 10.11.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import Foundation
import UIKit
//Default apearence settings
public let countDaysForSmaltextState = 3
public let countDaysForImageModeState = 7
public let countDaysToSmallTextState = 14
public let countDaysToImageState = 30
public let defaultInsets = UIEdgeInsetsMake(0, 0,0, 0)
public let defaultSmallTitleModeFont = UIFont(name: "Helvetica", size: 10.0)
public let defaultSmallTitleModeImageInsets = UIEdgeInsetsMake(0, 0, 0, 0)
public let defaultImageModeInsets = UIEdgeInsetsMake(6, 0, -6, 0)
public let defaultSmallTitleModeOffset = UIOffsetMake(0, 20)
public let defaultOffset = UIOffsetMake(0, 00)
public let tabColor = UIColor(red: 169/255, green: 79/255, blue: 152/255, alpha: 1.0)
public let defaultFont = UIFont(name: "Helvetica", size: 14.0)
@@ -0,0 +1,263 @@
//
// ControlStateAppearance.swift
// AdaptiveController
//
// Created by Arcilite on 22.10.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
let titleKey = "title"
let fontKey = "font"
let imageNameKey = "imageName"
let backgroundImageNameKey = "backgroundImageName"
let titleOffsetKey = "titleOffset"
let imageInsetsKey = "imageInsets"
let colorKey = "color"
let backgroundColorKey = "backgroundColor"
let horizontalKey = "horizontal"
let verticalKey = "vertical"
let heightKey = "height"
let widthKey = "width"
let leftKey = "left"
let topKey = "top"
let rightKey = "right"
let bottomKey = "bottom"
let fontNameKey = "fontName"
let fontSizeKey = "fontSize"
let redColor = "red"
let greenColor = "green"
let blueColor = "blue"
let alphaColor = "alpha"
public class ControlStateAppearance: AppearanceSerializationProtocol{
typealias DictionaryObject = AnyObject
typealias StateObject = AnyObject
public var title: String?
public var font: UIFont?
public var imageName: String?
public var image: UIImage?
public var backgroundImageName:String?
public var backgroundImage: UIImage?
public var titleOffset:UIOffset?
public var imageInsets:UIEdgeInsets?
public var titleColor:UIColor?
public var backgroundColor:UIColor?
public var enabled:Bool?
public init(){
title = ""
//font = defaultFont
// titleOffset = defaultOffset
//imageInsets = defaultImageModeInsets
titleColor = UIColor.whiteColor()
backgroundColor = UIColor.clearColor()
}
public convenience init(appearanceFullStyle:ControlStateAppearance?){
self.init()
font = appearanceFullStyle?.font
titleOffset = appearanceFullStyle?.titleOffset
imageInsets = appearanceFullStyle?.imageInsets
titleColor = appearanceFullStyle?.titleColor
backgroundColor = appearanceFullStyle?.backgroundColor
imageName = appearanceFullStyle?.imageName
backgroundImageName = appearanceFullStyle?.backgroundImageName
image = appearanceFullStyle?.image
backgroundImage = appearanceFullStyle?.backgroundImage
}
public convenience init(appearanceStyle:ControlStateAppearance?){
self.init()
font = appearanceStyle?.font
titleOffset = appearanceStyle?.titleOffset
imageInsets = appearanceStyle?.imageInsets
titleColor = appearanceStyle?.titleColor
backgroundColor = appearanceStyle?.backgroundColor
title = appearanceStyle?.title
}
func colorToDctionary(color:UIColor) -> Dictionary<String,AnyObject>{
var components = CGColorGetComponents(color.CGColor)
var colorDictionary = Dictionary<String,AnyObject>()
if CGColorGetNumberOfComponents(color.CGColor) == 2{
colorDictionary[redColor] = components[0]
colorDictionary[greenColor] = components[0]
colorDictionary[blueColor] = components[0]
colorDictionary[alphaColor] = components[1]
}else{
colorDictionary[redColor] = components[0]
colorDictionary[greenColor] = components[1]
colorDictionary[blueColor] = components[2]
colorDictionary[alphaColor] = components[3]
}
return colorDictionary
}
func dictionaryToColor(colorDictionary: Dictionary<String,CGFloat>?) -> UIColor{
if let colorValueDictioanary = colorDictionary {
var red:CGFloat = 0
if let redValue = colorValueDictioanary [redColor]{
red = redValue
}
var green:CGFloat = 0
if let greenValue = colorValueDictioanary [greenColor]{
green = greenValue
}
var blue:CGFloat = 0
if let blueValue = colorValueDictioanary [blueColor]{
blue = blueValue
}
var alpha:CGFloat = 0
if let alphaValue = colorValueDictioanary [alphaColor]{
alpha = alphaValue
}
return UIColor(red: red, green: green, blue: blue, alpha: alpha)
}else{
return UIColor.clearColor()
}
}
func dictionaryToInsets(insetsDictionary: Dictionary<String,CGFloat>?) -> UIEdgeInsets!{
if let insetsDictionary = insetsDictionary{
var left:CGFloat = 0
if let leftDictioanaryValue = insetsDictionary [leftKey]{
left = leftDictioanaryValue
}
var top:CGFloat = 0
if let topDictioanaryValue = insetsDictionary [topKey]{
top = topDictioanaryValue
}
var right:CGFloat = 0
if let rightDictionary = insetsDictionary[rightKey]{
right = rightDictionary
}
var bottom:CGFloat = 0
if let bottomDictionaryValue = insetsDictionary[bottomKey]{
bottom = bottomDictionaryValue
}
return UIEdgeInsetsMake(top, left, bottom, right)
}else{
return UIEdgeInsetsZero
}
}
func dictionaryToOffset(offsetDictionary: Dictionary<String,CGFloat>?) -> UIOffset{
var horizontal:CGFloat = 0
if let horizontalFromDictionary = offsetDictionary![horizontalKey]{
horizontal = horizontalFromDictionary
}
var vertical:CGFloat = 0
if let verticalFromDictionary = offsetDictionary![verticalKey]{
vertical = verticalFromDictionary
}
return UIOffsetMake(horizontal, vertical)
}
func dictionaryToFont(fontDictionary: Dictionary<String,AnyObject>) -> UIFont{
var fontName:String = fontDictionary [fontNameKey]! as String
var fontSize:CGFloat = fontDictionary [fontSizeKey]! as CGFloat
return UIFont( name: fontName, size:fontSize )!
}
func setObjectDictionary(dictionary:Dictionary<String,DictionaryObject>){
title = dictionary[titleKey] as? String
font = dictionaryToFont(dictionary[fontKey] as Dictionary <String, AnyObject>)
titleOffset = dictionaryToOffset(dictionary[titleOffsetKey] as? Dictionary <String, CGFloat>)
imageInsets = dictionaryToInsets(dictionary[imageInsetsKey] as? Dictionary <String, CGFloat>)
titleColor = dictionaryToColor(dictionary[colorKey]! as? Dictionary <String, CGFloat>)
backgroundColor = dictionaryToColor(dictionary[backgroundColorKey]! as? Dictionary <String, CGFloat>)
if let imageName = dictionary[imageNameKey] as? String{
image = UIImage(named:imageName)
self.imageName = imageName
}
if let backgroundImageName = dictionary[backgroundImageNameKey] as? String{
backgroundImage = UIImage(named:backgroundImageName)
}
}
func getObjectDictionary() -> Dictionary<String,DictionaryObject>{
var controlStateDictionary = Dictionary<String,AnyObject>()
if title != nil {
controlStateDictionary[titleKey] = title!
}else{
controlStateDictionary[titleKey] = ""
}
var fontDictionary = Dictionary<String,AnyObject>()
fontDictionary[fontNameKey] = font?.fontName
fontDictionary[fontSizeKey] = font?.pointSize
controlStateDictionary[fontKey] = fontDictionary
var offsetDictionary = Dictionary<String,AnyObject>()
offsetDictionary[horizontalKey] = titleOffset?.horizontal
offsetDictionary[verticalKey] = titleOffset?.vertical
controlStateDictionary[titleOffsetKey] = offsetDictionary
var insetsDictionary = Dictionary<String,AnyObject>()
insetsDictionary[bottomKey] = imageInsets?.bottom
insetsDictionary[topKey] = imageInsets?.top
insetsDictionary[leftKey] = imageInsets?.left
insetsDictionary[rightKey] = imageInsets?.right
controlStateDictionary[imageInsetsKey] = insetsDictionary
if titleColor != nil{
controlStateDictionary[colorKey] = colorToDctionary(titleColor!)
}else{
controlStateDictionary[colorKey] = UIColor(red: 0, green: 0, blue: 0, alpha: 0)
}
controlStateDictionary[backgroundColorKey] = colorToDctionary(backgroundColor!)
controlStateDictionary[imageNameKey] = imageName
controlStateDictionary[backgroundImageNameKey] = backgroundImageName
return controlStateDictionary
}
}
@@ -0,0 +1,18 @@
//
// ControlStateProtocol.swift
// AdaptiveController
//
// Created by Arcilite on 16.10.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import Foundation
protocol ControlStateProtocol:AppearanceSerializationProtocol {
typealias StateObject
typealias ControlStateType:Hashable
var controlStates: Dictionary <ControlStateType, StateObject>{get }
}
@@ -0,0 +1,102 @@
//
// ControlState.swift
// AdaptiveController
//
// Created by Arcilite on 16.10.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
extension UIControlState {
init(string:StringLiteralType){
switch(string){
case "UIControlStateNormal" :
self = UIControlState.Normal
case "UIControlStateHighlighted":
self = UIControlState.Highlighted
case"UIControlStateHighlighted":
self = UIControlState.Selected
default:
self = UIControlState.Disabled
}
}
func getStringKey()->String{
switch(self){
case UIControlState.Normal: return "UIControlStateNormal"
case UIControlState.Highlighted: return "UIControlStateHighlighted"
case UIControlState.Selected: return "UIControlStateSelected"
default: return "None"
}
}
}
public class ControlStateValue:ControlStateProtocol{
public typealias ControlStateType = UInt
public typealias StateObject = ControlStateAppearance
public typealias DictionaryObject = Dictionary <String,AnyObject>
public var controlStates :Dictionary <ControlStateType,ControlStateAppearance>
public init(){
self.controlStates = Dictionary<ControlStateType,ControlStateAppearance>()
}
public convenience init(values:Dictionary<ControlStateType,ControlStateAppearance>) {
self.init()
controlStates = values
}
public convenience init(styleValueStates:ControlStateValue) {
self.init()
for (state, object) in styleValueStates.controlStates {
self.controlStates.updateValue( ControlStateAppearance(appearanceStyle: object), forKey: state)
}
}
public func getObjectDictionary() -> Dictionary<String,DictionaryObject>{
var controlStatesDictionary = Dictionary<String,DictionaryObject>()
for (key,object ) in controlStates{
var appearance = object as ControlStateAppearance
var appearanceDictionary = appearance.getObjectDictionary()
let controlKey = UIControlState(key).getStringKey()
controlStatesDictionary.updateValue(appearanceDictionary, forKey:controlKey )
}
return controlStatesDictionary
}
public func setObjectDictionary(dictionary:Dictionary <String,DictionaryObject>){
var controlStatesDictionary = Dictionary<ControlStateType,ControlStateAppearance>()
for (key,object ) in dictionary{
var appearanceDictionary = object as Dictionary <String,AnyObject>
var appearanceObject = ControlStateAppearance()
appearanceObject.setObjectDictionary(appearanceDictionary)
controlStatesDictionary.updateValue(appearanceObject, forKey: UIControlState(string:key).rawValue)
}
self.controlStates = controlStatesDictionary
}
}
@@ -0,0 +1,59 @@
//
// DictioanarySeriliazator.swift
// AdaptiveController
//
// Created by Arcilite on 04.11.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
public class DictioanarySerializer: NSObject {
public typealias DictionaryObject = Dictionary <String,AnyObject>
public func buttonApperancesToArrayDictionary(buttonApearances:[AdaptiveButtonAppearance]) -> Array<Dictionary<String, AnyObject>>{
var buttonsApearancesDictionaryArray = Array<Dictionary<String, AnyObject>>()
for appeareance in buttonApearances{
buttonsApearancesDictionaryArray.append(appeareance.getObjectDictionary())
}
return buttonsApearancesDictionaryArray
}
public func saveStateDictionary(buttonApearances:[AdaptiveButtonAppearance],filePath:String){
var dataArray = buttonApperancesToArrayDictionary(buttonApearances)
var data : NSArray = dataArray as NSArray
data.writeToFile(filePath, atomically: true)
}
public func dictionaryAppearancesToArrayApperances(buttonApearancesDictionary:Array<Dictionary<String, DictionaryObject>>) -> [AdaptiveButtonAppearance]{
var buttonsApearancesDictionaryArray = [AdaptiveButtonAppearance]()
for appeareanceDictionary in buttonApearancesDictionary{
var appearance = AdaptiveButtonAppearance()
appearance.setObjectDictionary(appeareanceDictionary)
buttonsApearancesDictionaryArray.append(appearance)
}
return buttonsApearancesDictionaryArray
}
public func parseFromPlistToButtonAppearances(filePath:String)->[AdaptiveButtonAppearance] {
if countElements(filePath) > 0 {
// The file saved previously
// Check for existence of the file
if NSFileManager.defaultManager().fileExistsAtPath(filePath){
let resultArray = NSArray(contentsOfFile: filePath)
var appearancesDictionaryArray = resultArray as Array<Dictionary<String, DictionaryObject>>
return dictionaryAppearancesToArrayApperances(appearancesDictionaryArray)
}
}
return [AdaptiveButtonAppearance]()
}
}
@@ -7,7 +7,7 @@
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<string>ramotion.$(PRODUCT_NAME:rfc1034identifier)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
@@ -0,0 +1,72 @@
//
// AdaptiveButtonAppearanceTest.swift
// AdaptiveController
//
// Created by Arcilite on 03.11.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import XCTest
import UIKit
import AdaptiveController
class AdaptiveButtonAppearanceTest: XCTestCase {
func testAppearanceSetup() {
var settingsManager = AppearenceSettingManager()
//
settingsManager.defaultStyleSettingsForNormalState(AdaptiveStateEnum.DefaultAdaptiveState,titleOffset:defaultOffset, imageInsets:defaultInsets, titleColor:UIColor(red: 1, green: 1, blue: 1, alpha: 1), font:defaultFont!, backgroundColor:UIColor.clearColor())
settingsManager.defaultStyleSettingsForNormalState(AdaptiveStateEnum.SmallTitleAdaptiveState,titleOffset:defaultOffset, imageInsets:defaultSmallTitleModeImageInsets, titleColor:UIColor.whiteColor(), font:defaultSmallTitleModeFont!, backgroundColor:UIColor.clearColor())
settingsManager.defaultStyleSettingsForNormalState(AdaptiveStateEnum.ImageAdaptiveState,titleOffset:defaultOffset, imageInsets:defaultImageModeInsets, titleColor:UIColor.whiteColor(), font:defaultFont!, backgroundColor:UIColor.clearColor())
var watchControlDefaultStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.DefaultAdaptiveState, title:"watch", imageName:"watch")
var watchControlSmallTitleStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.SmallTitleAdaptiveState, title:"watch", imageName:"watch_smalltitle")
var watchControlImageStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.ImageAdaptiveState, title:"", imageName:"watch_bigimage")
let watchAppearanceStates = [AdaptiveStateEnum.DefaultAdaptiveState:watchControlDefaultStateValue,
AdaptiveStateEnum.SmallTitleAdaptiveState:watchControlSmallTitleStateValue,
AdaptiveStateEnum.ImageAdaptiveState:watchControlImageStateValue]
var watchAppearance = AdaptiveButtonAppearance(states:watchAppearanceStates)
var appearanceDictionary = watchAppearance.getObjectDictionary()
var testAppearance = AdaptiveButtonAppearance()
testAppearance.setObjectDictionary(appearanceDictionary)
if let controlStateValue = testAppearance.stateDictionary[AdaptiveStateEnum.DefaultAdaptiveState]{
if let normalStateAppearenceObject = controlStateValue.controlStates[UIControlState.Normal.rawValue]{
XCTAssert(normalStateAppearenceObject.titleColor == UIColor(red: 1, green: 1, blue: 1, alpha: 1), "Fail color")
XCTAssert(UIOffsetEqualToOffset(normalStateAppearenceObject.titleOffset!,defaultOffset), "Fail offset")
XCTAssert(UIEdgeInsetsEqualToEdgeInsets(defaultInsets, normalStateAppearenceObject.imageInsets!), "Fail insets")
}
}
}
}
@@ -0,0 +1,152 @@
//
// AdaptiveControllerTests.swift
// AdaptiveControllerTests
//
// Created by Arcilite on 24.09.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
import XCTest
import AdaptiveController
class AdaptiveControllerTests: XCTestCase {
class MockUIImage: UIImage {
var checkImageString:String?
}
override func setUp() {
super.setUp()
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
func testDefaultState() {
// This is an example of a functional test case.
var installDate = NSDate(dateString:"2014-07-7")
var currentDate = NSDate(dateString:"2014-07-7")
var adaptiveDateState = AdaptiveDateState(installDate: installDate,currentDate:currentDate,countDaysToSmallTextState:countDaysToSmallTextState,countDaysToImageState:countDaysToImageState)
var buttonsAppearances = buttonsAppearancesGenerate()
var tabBarItem = TestTabBarItem()
var arrayButtons = [tabBarItem]
AdaptiveButtonsStateManager.setupButtonsAppearanceFromState(adaptiveDateState,buttonsAray:arrayButtons ,buttonsAppearances: buttonsAppearances)
//assert
XCTAssert(tabBarItem.color!.isEqual(UIColor.whiteColor()), "Fail color")
XCTAssert(UIOffsetEqualToOffset(tabBarItem.offset!,defaultOffset), "Fail offset")
XCTAssert(UIEdgeInsetsEqualToEdgeInsets(defaultInsets, tabBarItem.insets!), "Fail insets")
let bundle = NSBundle(forClass: AdaptiveButtonAppearance.self)
// var image:MockUIImage = tabBarItem.image as MockUIImage
//XCTAssert(image.checkImageString!.isEqual("default Image"), "Fail image")
XCTAssert(tabBarItem.text!.isEqualToString("watch"), "Fail text")
XCTAssert(tabBarItem.font!.isEqual(defaultFont), "Fail font")
}
func testSmallTextState() {
// This is an example of a functional test case.
var installDate = NSDate(dateString:"2014-07-7")
var currentDate = NSDate(dateString:"2014-07-21")
var adaptiveDateState = AdaptiveDateState(installDate: installDate,currentDate:currentDate,countDaysToSmallTextState:countDaysToSmallTextState,countDaysToImageState:countDaysToImageState)
// XCTAssert(!adaptiveDateState.isEqual(kSmallTitleAdaptiveState), "Fail SmallTitleState")
var buttonsAppearances = buttonsAppearancesGenerate()
var tabBarItem = TestTabBarItem()
var arrayButtons = [tabBarItem]
// AdaptiveButtonsStateManager(state: adaptiveDateState,buttonsAray:arrayButtons ,buttonsAppearance: buttonsAppearances)
AdaptiveButtonsStateManager.setupButtonsAppearanceFromState(adaptiveDateState,buttonsAray:arrayButtons ,buttonsAppearances: buttonsAppearances)
XCTAssert(tabBarItem.color!.isEqual(UIColor.whiteColor()), "Fail color")
XCTAssert(UIOffsetEqualToOffset(tabBarItem.offset!,defaultOffset), "Fail offset")
XCTAssert(UIEdgeInsetsEqualToEdgeInsets(defaultInsets, tabBarItem.insets!), "Fail insets")
//var image:MockUIImage = tabBarItem.image as MockUIImage
//XCTAssert(image.checkImageString!.isEqual("smalltitle Image"), "Fail image")
XCTAssert(tabBarItem.font!.isEqual(defaultSmallTitleModeFont), "Fail font")
}
func testImageState() {
// This is an example of a functional test case.
var installDate = NSDate(dateString:"2014-07-7")
var currentDate = NSDate(dateString:"2014-08-21")
var adaptiveDateState = AdaptiveDateState(installDate: installDate,currentDate:currentDate,countDaysToSmallTextState:countDaysToSmallTextState,countDaysToImageState:countDaysToImageState)
//XCTAssert(!adaptiveDateState.isEqual(kImageAdaptiveState), "Fail ImageAdaptiveState")
var buttonsAppearances = buttonsAppearancesGenerate()
var tabBarItem = TestTabBarItem()
var arrayButtons = [tabBarItem]
// AdaptiveButtonsStateManager(state: adaptiveDateState,buttonsAray:arrayButtons ,buttonsAppearance: buttonsAppearances)
AdaptiveButtonsStateManager.setupButtonsAppearanceFromState(adaptiveDateState,buttonsAray:arrayButtons ,buttonsAppearances: buttonsAppearances)
XCTAssert(tabBarItem.color!.isEqual(UIColor.whiteColor()), "Fail color")
XCTAssert(UIOffsetEqualToOffset(tabBarItem.offset!,defaultOffset), "Fail offset")
XCTAssert(UIEdgeInsetsEqualToEdgeInsets(defaultImageModeInsets, tabBarItem.insets!), "Fail insets")
// var image:MockUIImage = tabBarItem.image as MockUIImage
// XCTAssert(image.checkImageString!.isEqual("big Image"), "Fail image")
XCTAssert(tabBarItem.text!.isEqualToString(""), "Fail text")
XCTAssert(tabBarItem.font!.isEqual(defaultFont), "Fail font")
}
func buttonsAppearancesGenerate() -> [AdaptiveButtonAppearance]{
var settingsManager = AppearenceSettingManager()
//
settingsManager.defaultStyleSettingsForNormalState(AdaptiveStateEnum.DefaultAdaptiveState,titleOffset:defaultOffset, imageInsets:defaultInsets, titleColor:UIColor.whiteColor(), font:defaultFont!, backgroundColor:UIColor.clearColor())
settingsManager.defaultStyleSettingsForNormalState(AdaptiveStateEnum.SmallTitleAdaptiveState,titleOffset:defaultOffset, imageInsets:defaultSmallTitleModeImageInsets, titleColor:UIColor.whiteColor(), font:defaultSmallTitleModeFont!, backgroundColor:UIColor.clearColor())
settingsManager.defaultStyleSettingsForNormalState(AdaptiveStateEnum.ImageAdaptiveState,titleOffset:defaultOffset, imageInsets:defaultImageModeInsets, titleColor:UIColor.whiteColor(), font:defaultFont!, backgroundColor:UIColor.clearColor())
var watchControlDefaultStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.DefaultAdaptiveState, title:"watch", imageName:"watch")
var watchControlSmallTitleStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.SmallTitleAdaptiveState, title:"watch", imageName:"watch_smalltitle")
var watchControlImageStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.ImageAdaptiveState, title:"", imageName:"watch_bigimage")
let watchAppearanceStates = [AdaptiveStateEnum.DefaultAdaptiveState:watchControlDefaultStateValue,
AdaptiveStateEnum.SmallTitleAdaptiveState:watchControlSmallTitleStateValue,
AdaptiveStateEnum.ImageAdaptiveState:watchControlImageStateValue]
var watchAppearance = AdaptiveButtonAppearance(states:watchAppearanceStates)
return [watchAppearance]
}
}
@@ -0,0 +1,60 @@
//
// AdaptiveDateStateTest.swift
// AdaptiveController
//
// Created by Arcilite on 14.10.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
import XCTest
import AdaptiveController
class AdaptiveDateStateTest: XCTestCase {
var adaptiveDateState:AdaptiveDateState?
var installDate:NSDate?
override func setUp() {
super.setUp()
installDate = NSDate(dateString:"2014-07-7")
var currentDate = NSDate(dateString:"2014-07-8")
adaptiveDateState = AdaptiveDateState(installDate: installDate!,currentDate:currentDate,countDaysToSmallTextState:countDaysToSmallTextState,countDaysToImageState:countDaysToImageState)
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
func testDefaultState() {
// This is an example of a functional test case.
XCTAssert(adaptiveDateState?.currentItemState?.rawValue == AdaptiveStateEnum.DefaultAdaptiveState.rawValue, "Fail DefaultState")
}
func testSmallTextState() {
// This is an example of a functional test case.
var currentDate = NSDate(dateString:"2014-07-21")
adaptiveDateState = AdaptiveDateState(installDate: installDate!,currentDate:currentDate,countDaysToSmallTextState:countDaysToSmallTextState,countDaysToImageState:countDaysToImageState)
XCTAssert(adaptiveDateState?.currentItemState?.rawValue == AdaptiveStateEnum.SmallTitleAdaptiveState.rawValue, "Fail SmallTitleState")
}
func testImageState() {
// This is an example of a functional test case.
var currentDate = NSDate(dateString:"2014-08-21")
adaptiveDateState = AdaptiveDateState(installDate: installDate!,currentDate:NSDate(),countDaysToSmallTextState:countDaysToSmallTextState,countDaysToImageState:countDaysToImageState)
XCTAssert(adaptiveDateState?.currentItemState?.rawValue == AdaptiveStateEnum.ImageAdaptiveState.rawValue, "Fail ImageAdaptiveState")
}
}
@@ -0,0 +1,57 @@
//
// AdaptiveLaunchesState.swift
// AdaptiveController
//
// Created by Arcilite on 14.10.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
import XCTest
import AdaptiveController
class AdaptiveLaunchesStateTest: XCTestCase {
var adaptiveLaunchState:AdaptiveLaunchesState?
override func setUp() {
super.setUp()
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
func testDefaultState() {
var curentCountLaunches = 0
adaptiveLaunchState = AdaptiveLaunchesState(curentCountLaunches:curentCountLaunches,countLaunchesToSmallTextState:countDaysForSmaltextState,countLaunchesToImageState:countDaysForImageModeState)
// This is an example of a functional test case.
// This is an example of a functional test case.
XCTAssert(adaptiveLaunchState?.currentItemState?.rawValue == AdaptiveStateEnum.DefaultAdaptiveState.rawValue, "Fail DefaultState")
}
func testSmallTextState() {
// This is an example of a functional test case.
var curentCountLaunches = 5
adaptiveLaunchState = AdaptiveLaunchesState(curentCountLaunches:curentCountLaunches,countLaunchesToSmallTextState:countDaysForSmaltextState,countLaunchesToImageState:countDaysForImageModeState)
XCTAssert(adaptiveLaunchState?.currentItemState?.rawValue == AdaptiveStateEnum.SmallTitleAdaptiveState.rawValue, "Fail SmaltitleState")
}
func testImageState() {
// This is an example of a functional test case.
var curentCountLaunches = 10
adaptiveLaunchState = AdaptiveLaunchesState(curentCountLaunches:curentCountLaunches,countLaunchesToSmallTextState:countDaysForSmaltextState,countLaunchesToImageState:countDaysForImageModeState)
XCTAssert(adaptiveLaunchState?.currentItemState?.rawValue == AdaptiveStateEnum.ImageAdaptiveState.rawValue, "Fail ImageAdaptiveState")
}
}
@@ -0,0 +1,69 @@
//
// ControlStateAppearanceTest.swift
// AdaptiveController
//
// Created by Arcilite on 01.11.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
import XCTest
import AdaptiveController
//extension ControlStateAppearance{
//
// public func getObjectDictionary() -> Dictionary<String,AnyObject>{
// return getObjectDictionary()
// }
// public func setObjectDictionary(dictionary:Dictionary<String,AnyObject>){
// setObjectDictionary(dictionary)
// }
//}
class ControlStateAppearanceTest: XCTestCase {
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
func testControlstateAppearance() {
var appearance = ControlStateAppearance();
appearance.font = UIFont(name: "Arial", size: 12)
appearance.title = "2"
appearance.imageInsets = UIEdgeInsetsMake(2, 2, 2, 2)
appearance.titleOffset = UIOffsetMake(2, 2)
appearance.titleColor = UIColor(red: 0, green: 0, blue: 0, alpha: 1)
appearance.backgroundColor = UIColor(red: 0, green: 7, blue: 0, alpha: 1)
var appearance1 = ControlStateAppearance();
appearance1.setObjectDictionary( appearance.getObjectDictionary())
XCTAssert(appearance.titleColor == appearance1.titleColor, "Fail color")
XCTAssert(appearance.backgroundColor == appearance1.backgroundColor, "Fail color")
XCTAssert(appearance1.titleColor == appearance.titleColor, "Fail color")
XCTAssert(UIOffsetEqualToOffset(appearance1.titleOffset!,appearance.titleOffset!), "Fail offset")
XCTAssert(UIEdgeInsetsEqualToEdgeInsets(appearance.imageInsets!, appearance1.imageInsets!), "Fail insets")
}
func testPerformanceExample() {
// This is an example of a performance test case.
self.measureBlock() {
// Put the code you want to measure the time of here.
}
}
}
@@ -0,0 +1,88 @@
//
// ControlStateValueTest.swift
// AdaptiveController
//
// Created by Arcilite on 28.10.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
import XCTest
import AdaptiveController
class ControlStateValueTest: XCTestCase {
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
func testControlStateAppearance() {
var appearance = ControlStateAppearance()
appearance.font = UIFont(name: "Arial", size: 12)
appearance.title = "2"
appearance.imageInsets = UIEdgeInsetsMake(2, 2, 2, 2)
appearance.titleOffset = UIOffsetMake(2, 2)
appearance.titleColor = UIColor(red: 0, green: 0, blue: 0, alpha: 1)
appearance.backgroundColor = UIColor(red: 0, green: 7, blue: 0, alpha: 1)
var value = ControlStateValue(values: [UIControlState.Normal.rawValue:appearance])
// value.setControlApearence(appearance,state:UIControlState.Normal)
var object:ControlStateAppearance = value.controlStates[UIControlState.Normal.rawValue]!
XCTAssert(object.title! == appearance.title , "Pass")
}
func testControlStateAppearanceSerialization() {
var appearance = ControlStateAppearance()
appearance.font = UIFont(name: "Arial", size: 12)
appearance.title = "2"
appearance.imageInsets = UIEdgeInsetsMake(2, 2, 2, 2)
appearance.titleOffset = UIOffsetMake(2, 2)
appearance.titleColor = UIColor(red: 0, green: 0, blue: 0, alpha: 1)
appearance.backgroundColor = UIColor(red: 0, green: 7, blue: 0, alpha: 1)
//
var value = ControlStateValue(values: [UIControlState.Normal.rawValue:appearance])
var object:ControlStateAppearance = value.controlStates[UIControlState.Normal.rawValue]!
XCTAssert(object.title! == appearance.title , "Pass")
var value1 = ControlStateValue()
value1.setObjectDictionary(value.getObjectDictionary())
var object1:ControlStateAppearance = value.controlStates[UIControlState.Normal.rawValue]!
XCTAssert(object1.title! == appearance.title , "Pass")
XCTAssert(appearance.titleColor == object1.titleColor, "Fail color")
XCTAssert(appearance.backgroundColor == object1.backgroundColor, "Fail color")
XCTAssert(appearance.titleColor == object1.titleColor, "Fail color")
XCTAssert(UIOffsetEqualToOffset(appearance.titleOffset!,object1.titleOffset!), "Fail offset")
XCTAssert(UIEdgeInsetsEqualToEdgeInsets(appearance.imageInsets!, object1.imageInsets!), "Fail insets")
}
func testPerformanceExample() {
// This is an example of a performance test case.
self.measureBlock() {
// Put the code you want to measure the time of here.
}
}
}
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>ramotion.$(PRODUCT_NAME:rfc1034identifier)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>
@@ -0,0 +1,77 @@
//
// TestTabBarItem.swift
// AdaptiveController
//
// Created by Arcilite on 17.10.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import Foundation
import UIKit
import AdaptiveController
import XCTest
public class TestTabBarItem: AdaptiveApperanceProtocol {
var font:UIFont?
var text:NSString?
var image:UIImage?
var selectedImage:UIImage?
var insets:UIEdgeInsets?
var color:UIColor?
var offset :UIOffset?
init(){
}
func setFontToAdaptiveButton(font: UIFont){
self.font = font
}
public func setTitleToAdaptiveButton(text: NSString){
self.text = text;
}
public func setImageToAdaptiveButton(image: UIImage?){
// XCTAssertNotNil(image)
self.image = image
}
func setSelectedImageToAdaptiveButton(image: UIImage){
self.selectedImage = image;
}
public func setImageInsetsToAdaptiveButton(insets: UIEdgeInsets){
self.insets = insets
}
public func setTitleOffsetToAdaptiveButton(offset: UIOffset){
self.offset = offset;
}
func setTitleColorToAdaptiveButton(color: UIColor){
self.color = color;
}
public func setFontToAdaptiveButton(font: UIFont , controlState:UIControlState){
self.font = font
}
public func setTitleColorToAdaptiveButton(color: UIColor, controlState:UIControlState){
self.color = color;
}
}
View File
-33
View File
@@ -1,33 +0,0 @@
# Contributing to a Project
Now that youve found the material for understanding the project, here is how you can take action.
### Create an Issue
If you find a bug in a project youre using (and you dont know how to fix it), have trouble following the documentation or have a question about the project create an issue! Theres nothing to it and whatever issue youre having, youre likely not the only one, so others will find your issue helpful, too. For more information on how issues work, check out our Issues guide.
#### Issues Pro Tips
Check existing issues for your issue. Duplicating an issue is slower for both parties so search through open and closed issues to see if what youre running into has been addressed already.
Be clear about what your problem is: what was the expected outcome, what happened instead? Detail how someone else can recreate the problem.
Link to demos recreating the problem on things like JSFiddle or CodePen.
Include system details like what the browser, library or operating system youre using and its version.
Paste error output or logs in your issue or in a Gist. If pasting them in the issue, wrap it in three backticks: ``` so that it renders nicely.
### Pull Request
If youre able to patch the bug or add the feature yourself fantastic, make a pull request with the code! Be sure youve read any documents on contributing, understand the license and have signed a CLA if required. Once youve submitted a pull request the maintainer(s) can compare your branch to the existing one and decide whether or not to incorporate (pull in) your changes.
#### Pull Request Pro Tips
Fork the repository and clone it locally. Connect your local to the original upstream repository by adding it as a remote. Pull in changes from upstream often so that you stay up to date so that when you submit your pull request, merge conflicts will be less likely. See more detailed instructions here.
Create a branch for your edits.
Be clear about what problem is occurring and how someone can recreate that problem or why your feature will help. Then be equally as clear about the steps you took to make your changes.
Its best to test. Run your changes against any existing tests if they exist and create new ones when needed. Whether tests exist or not, make sure your changes dont break the existing project.
Include screenshots of the before and after if your changes include differences in HTML/CSS. Drag and drop the images into the body of your pull request.
Contribute in the style of the project to the best of your abilities. This may mean using indents, semi colons or comments differently than you would in your own repository, but makes it easier for the maintainer to merge, others to understand and maintain in the future.
#### Open Pull Requests
Once youve opened a pull request a discussion will start around your proposed changes. Other contributors and users may chime in, but ultimately the decision is made by the maintainer(s). You may be asked to make some changes to your pull request, if so, add more commits to your branch and push them theyll automatically go into the existing pull request.
If your pull request is merged great! If it is not, no sweat, it may not be what the project maintainer had in mind, or they were already working on it. This happens, so our recommendation is to take any feedback youve received and go forth and pull request again or create your own open source project.
-43
View File
@@ -1,43 +0,0 @@
// swift-tools-version:5.1
//
// Package.swift
//
// Copyright (c) Ramotion (https://www.ramotion.com/)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
import PackageDescription
let package = Package(
name: "AdaptiveController",
platforms: [
.iOS(.v8)
],
products: [
.library(name: "AdaptiveController",
targets: ["AdaptiveController"]),
],
targets: [
.target(name: "AdaptiveController",
path: "adaptive-tab-bar/AdaptiveController/AdaptiveController")
],
swiftLanguageVersions: [.v5]
)
+50 -76
View File
@@ -1,54 +1,32 @@
<a href="https://www.ramotion.com/agency/app-development/?utm_source=gthb&utm_medium=repo&utm_campaign=adaptive-tab-bar"><img src="https://github.com/Ramotion/folding-cell/blob/master/header.png"></a>
# Adaptive Tab Bar
<a href="https://github.com/Ramotion/adaptive-tab-bar">
<img align="left" src="https://github.com/Ramotion/adaptive-tab-bar/blob/master/adaptive_tab_bar.gif" width="480" height="360" /></a>
AdaptiveController is a 'Progressive Reduction' Swift module for adding custom states to Native or Custom UI elements.
<p><h1 align="left">ADAPTIVE TAB BAR</h1></p>
![Mou icon](https://d13yacurqjgara.cloudfront.net/users/25514/screenshots/1320024/viber-ios7-concept-navigation-bar-ramotion.gif)
<h4>'Progressive Reduction' module for adding custom states to Native or Custom UI elements.</h4>
##Tab Bar After Install
![Mou icon](http://i.imgur.com/7V6M7z6.png?1)
##Tab Bar After Two Weeks
___
![Mou icon](http://i.imgur.com/KTZIC4Z.png?1)
##Tab Bar After a Month
![Mou icon](http://i.imgur.com/TNQMGTf.png?1)
<p><h6>We specialize in the designing and coding of custom UI for Mobile Apps and Websites.</h6>
<a href="https://www.ramotion.com/agency/app-development/?utm_source=gthb&utm_medium=repo&utm_campaign=adaptive-tab-bar">
<img src="https://github.com/ramotion/gliding-collection/raw/master/contact_our_team@2x.png" width="187" height="34"></a>
</p>
<p><h6>Stay tuned for the latest updates:</h6>
<a href="https://goo.gl/rPFpid" >
<img src="https://i.imgur.com/ziSqeSo.png/" width="156" height="28"></a></p>
</br>
[![CocoaPods](https://img.shields.io/cocoapods/p/AdaptiveController.svg)](https://cocoapods.org/pods/AdaptiveController)
[![CocoaPods](https://img.shields.io/cocoapods/v/RAMPaperSwitch.svg)](http://cocoapods.org/pods/AdaptiveController)
[![Twitter](https://img.shields.io/badge/Twitter-@Ramotion-blue.svg?style=flat)](http://twitter.com/Ramotion)
[![Travis](https://img.shields.io/travis/Ramotion/adaptive-tab-bar.svg)](https://travis-ci.org/Ramotion/adaptive-tab-bar)
[![Donate](https://img.shields.io/badge/Donate-PayPal-blue.svg)](https://paypal.me/Ramotion)
## Tab Bar After Install
![Animation](http://i.imgur.com/7V6M7z6.png?1)
## Tab Bar After Two Weeks
![Animation](http://i.imgur.com/KTZIC4Z.png?1)
## Tab Bar After a Month
![Animation](http://i.imgur.com/TNQMGTf.png?1)
## Overview
##Overview
AdaptiveController is module for adding custom states to Native or Custom UI elements. The UI elements evolve over time as the user becomes accustomed to them. An example AdaptiveTabBar is provided.
## How to import the control to your project
##How to import the control to your project
1. First, drag and drop the AdaptiveController project file into your project or select "add existing file" and choose the AdaptiveController project
2. Add AdaptiveController to your Target Dependences in the Build Phase of your project.
3. Add the AdaptiveController framework in Link Binary With Libraries in Build Phases
4. Import AdaptiveController where needed.
## Using AdaptiveController
##Using AdaptiveController
First, you should set the install date, current date, count of days to transition to small text state, and count of days to transition to big image state. The AdaptiveDateState object automatically determines what UI state to show:
@@ -71,44 +49,54 @@ And then you should setup an array of appearances. You should setup button image
And then you should setup an array of items Appearance object. You should set the button's image for each state for each appearance object.
First, you should setup a dictionary for the extension of the image for each UI state:
First, you should setup a style for each UI state:
```swift
var imageExtensionsForStates:Dictionary = [ kSmallTitleAdaptiveState:"_smalltitle", kImageAdaptiveState:"_bigimage", kSmallTitleAdaptiveState+selected :"_smalltitle", kImageAdaptiveState+selected:"_bigimage" ]
```swift
var settingsManager = AppearenceSettingManager()
settingsManager.defaultStyleSettingsForNormalState(AdaptiveStateEnum.DefaultAdaptiveState,titleOffset:defaultOffset, imageInsets:defaultInsets, titleColor:UIColor.whiteColor(), font:defaultFont!, backgroundColor:UIColor.clearColor())
settingsManager.defaultStyleSettingsForNormalState(AdaptiveStateEnum.SmallTitleAdaptiveState,titleOffset:defaultOffset, imageInsets:defaultSmallTitleModeImageInsets, titleColor:UIColor.whiteColor(), font:defaultSmallTitleModeFont!, backgroundColor:UIColor.clearColor())
settingsManager.defaultStyleSettingsForNormalState(AdaptiveStateEnum.ImageAdaptiveState,titleOffset:defaultOffset, imageInsets:defaultImageModeInsets, titleColor:UIColor.whiteColor(), font:defaultFont!, backgroundColor:UIColor.clearColor())
```
Then you should set the Appearance for each UITabBarItem title for each state, fonts for each state, a default image if you describe an extension for each state, or if you do not describe an extension, you should setup each image for each state.
Then you should set the Appearance for each UITabBarItem title for each state and image for each state
First, init the appearance object and setup the text for each state. If the text is the same for each state, you can set text for the default state:
First, init the appearance values with title and image with presetes appearances style :
```swift
var watchAppearance = AdaptiveButtonAppearance();
watchAppearance.setButonTitle("watch", state: kDefaultAdaptiveState)
watchAppearance.setButonTitle("watch", state: kSmallTitleAdaptiveState)
watchAppearance.setButonTitle("", state: kImageAdaptiveState)
```swift
var messageСontrolDefaultStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.DefaultAdaptiveState, title:"messages", imageName:"messages")
var messageControlSmallTitleStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.SmallTitleAdaptiveState, title:"messages", imageName:"messages_smalltitle")
var messageControlImageStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.ImageAdaptiveState, title:"", imageName:"messages_bigimage")
```
Then you should setup your fonts for each state:
then init appearace opject with aprerance object for each state
```swift
watchAppearance.setButonTitleFontForState(yourDefaultFont, state: kDefaultAdaptiveState)
watchAppearance.setButonTitleFontForState(yourDefaultSmallTitleModeFont, state: kSmallTitleAdaptiveState)
let messageAppearanceStates = [AdaptiveStateEnum.DefaultAdaptiveState:messageСontrolDefaultStateValue,
AdaptiveStateEnum.SmallTitleAdaptiveState:messageControlSmallTitleStateValue,
AdaptiveStateEnum.ImageAdaptiveState:messageControlImageStateValue]
var messageAperance = AdaptiveButtonAppearance(states:messageAppearanceStates)
es)
```
Then you should set the default image and extensions for each state a function which automaticaly sets images for each state:
In alternative way you can setup all appearances settings in plist like on image
```swift
watchAppearance.setImageNamesForStatesImageExtesions("watch", imageExtensionsForState:imageExtensionsForStates)
![Mou icon](http://i.imgur.com/zLP8zHF.png)
sample of plist you can find in example-date-adaptive-tab-bar project file named appearances.plist
for setuping button appearences from plist you can use this code:
```swift
var seriliazator = DictioanarySeriliazator()
var butonsApperances = seriliazator.getButtonApperances(path!)
```
Then you should setup the appearance insets for each state:
```swift
watchAppearance.setImageInsets(defaultInsets, state: kDefaultAdaptiveState);
watchAppearance.setImageInsets(defaultSmallTitleModeImageInsets, state: kSmallTitleAdaptiveState)
watchAppearance.setTitleOffset(defaultOffset, state: kDefaultAdaptiveState)
watchAppearance.setImageInsets(defaultImageModeInsets, state: kImageAdaptiveState);
```
for debugging button appearences you can save your aperances in plist for this you can use next code:
```swift
var paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
paths = paths.stringByAppendingPathComponent("appearances.plist")
seriliazator.saveStateDictionary(butonsApperances,filePath:paths)
```
Then you should setup сustom UITabBarItems which conform to the AdaptiveButtonsProtocol:
```swift
@@ -186,22 +174,8 @@ In AdaptiveDateState, we add custom init methods which decided what states have
You can customize different UI components if they adopt to the AdaptiveApperanceProtocol.
## 📄 License
##About us
Adaptive Tab Bar is released under the MIT license.
See [LICENSE](./LICENSE) for details.
[Ramotion](http://Ramotion.com) is an iPhone app design and development company. We are ready for new interesting iOS App Development projects.
This library is a part of a <a href="https://github.com/Ramotion/swift-ui-animation-components-and-libraries"><b>selection of our best UI open-source projects.</b></a>
If you use the open-source library in your project, please make sure to credit and backlink to www.ramotion.com
## 📱 Get the Showroom App for iOS to give it a try
Try this UI component and more like this in our iOS app. Contact us if interested.
<a href="https://itunes.apple.com/app/apple-store/id1182360240?pt=550053&ct=adaptive-tab-bar&mt=8" >
<img src="https://github.com/ramotion/gliding-collection/raw/master/app_store@2x.png" width="117" height="34"></a>
<a href="https://www.ramotion.com/agency/app-development/?utm_source=gthb&utm_medium=repo&utm_campaign=adaptive-tab-bar">
<img src="https://github.com/ramotion/gliding-collection/raw/master/contact_our_team@2x.png" width="187" height="34"></a>
<br>
<br>
Follow us on [twitter](http://twitter.com/ramotion).
@@ -0,0 +1,4 @@
//
// Use this file to import your target's public headers that you would like to expose to Swift.
//
@@ -0,0 +1,176 @@
//
// AdaptiveButtonApperance.swift
// AdaptiveTabBarControllerSample
//
// Created by Arcilite on 18.09.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
let kNotTitle = ""
let defaultFont = UIFont(name: "Helvetica", size: 14.0)
class AdaptiveButtonApperance: NSObject {
private var butonsTitleForStateDictionary:Dictionary <String,String> = Dictionary<String,String>()
private var butonsTitleFontForStateDictionary:Dictionary <String,UIFont> = Dictionary<String,UIFont>()
private var buttonsImageForStateDictionary:Dictionary <String,UIImage> = Dictionary<String,UIImage>()
private var buttonsBackgroundImageForStateDictionary:Dictionary <String,UIImage> = Dictionary<String,UIImage>()
private var buttonsImageInsetsForStateDictionary:Dictionary <String,UIEdgeInsets> = Dictionary<String,UIEdgeInsets>()
private var buttonsTitleInsetsForStateDictionary:Dictionary <String,UIOffset> = Dictionary<String,UIOffset>()
private var buttonsTitleColorsForStateDictionary:Dictionary <String,UIColor> = Dictionary<String,UIColor>()
func setInsetsFromAdaptiveButtonApperance(adaptiveButtonApperance:AdaptiveButtonApperance){
self.buttonsImageInsetsForStateDictionary = adaptiveButtonApperance.buttonsImageInsetsForStateDictionary
self.buttonsTitleInsetsForStateDictionary = adaptiveButtonApperance.buttonsTitleInsetsForStateDictionary
}
func setFontsFromAdaptiveButtonApperance(adaptiveButtonApperance:AdaptiveButtonApperance){
self.butonsTitleFontForStateDictionary = adaptiveButtonApperance.butonsTitleFontForStateDictionary
}
func setAllCommonApperanceFrom(adaptiveButtonApperance:AdaptiveButtonApperance){
self.setInsetsFromAdaptiveButtonApperance(adaptiveButtonApperance)
self.setFontsFromAdaptiveButtonApperance(adaptiveButtonApperance)
self.buttonsTitleColorsForStateDictionary = adaptiveButtonApperance.buttonsTitleColorsForStateDictionary
}
func setImageNamesForStatesImageExtesions(imageName :String ,imageExtensionsForState:Dictionary <String,String>){
self.setButtonImage(UIImage(named: imageName), state: kDefaultAdaptiveState)
for (state,imageExtension) in imageExtensionsForState {
self.setButtonImage(UIImage(named: imageName+imageExtension), state: state)
}
}
func setButonTitle(title:NSString, state:String){
butonsTitleForStateDictionary.updateValue(title, forKey:state)
}
func getButonTitleForState(state:NSString)->String!{
if let title = butonsTitleForStateDictionary[state] {
return title
}else{
if let title = butonsTitleForStateDictionary[kDefaultAdaptiveState] {
return title
}else{
return kNotTitle
}
}
}
func setButonTitleFontForState(font:UIFont, state:String){
butonsTitleFontForStateDictionary.updateValue(font, forKey:state)
}
func getButonTitleFontForState(state:NSString)->UIFont{
var font:UIFont? = butonsTitleFontForStateDictionary[state]
if let font = butonsTitleFontForStateDictionary[state] {
return font
}else{
if let font = butonsTitleFontForStateDictionary[kDefaultAdaptiveState] {
return font
}else{
return defaultFont
}
}
}
func setButtonImage(image:UIImage, state:String){
buttonsImageForStateDictionary.updateValue(image, forKey:state)
print("set State \(state)")
}
func getButonImageForState(state:NSString)->UIImage!{
print("get State \(state)")
if let image = buttonsImageForStateDictionary[state] {
return image
}else{
return buttonsImageForStateDictionary[kDefaultAdaptiveState]
}
}
func setBackgroundButonImage(image:UIImage, state:String){
buttonsImageForStateDictionary.updateValue(image, forKey:state)
}
func getBackgroundImageForState(state:NSString)->UIImage?{
if let image = buttonsBackgroundImageForStateDictionary[state] {
return image
}else{
return buttonsBackgroundImageForStateDictionary[kDefaultAdaptiveState]
}
}
func setImageInsets(insets:UIEdgeInsets, state:String){
buttonsImageInsetsForStateDictionary.updateValue(insets, forKey:state)
}
func getImageInsetsForState(state:NSString)->UIEdgeInsets!{
if let insets = buttonsImageInsetsForStateDictionary[state] {
return buttonsImageInsetsForStateDictionary[state]!
}else{
return buttonsImageInsetsForStateDictionary[kDefaultAdaptiveState]
}
}
func setTitleOffset(insets:UIOffset, state:String){
buttonsTitleInsetsForStateDictionary.updateValue(insets, forKey:state)
}
func getTitleOffsetForState(state:NSString)->UIOffset!{
var offset:UIOffset? = buttonsTitleInsetsForStateDictionary[state]
if(offset == nil){
offset = buttonsTitleInsetsForStateDictionary[kDefaultAdaptiveState]?
}
return offset!
}
func setTitleColor(color:UIColor, state:String){
buttonsTitleColorsForStateDictionary.updateValue(color, forKey:state)
}
func getTitleColorForState(state:NSString)->UIColor!{
var offset:UIColor? = buttonsTitleColorsForStateDictionary[state]
if(offset == nil){
offset = buttonsTitleColorsForStateDictionary[kDefaultAdaptiveState]?
}
return offset!
}
}
@@ -11,13 +11,15 @@ import UIKit
let countDaysToSmallTextState = 14
let countDaysToImageState = 30
let defaultInsets = UIEdgeInsetsMake(0, 0, 0, 0)
let defaultInsets = UIEdgeInsetsMake(0, 0,0, 0)
let defaultSmallTitleModeFont = UIFont(name: "Helvetica", size: 10.0)
let defaultSmallTitleModeImageInsets = UIEdgeInsetsMake(0, 0, 0, 0)
let defaultImageModeInsets = UIEdgeInsetsMake(6, 0, -6, 0)
let defaultSmallTitleModeImageInsets = UIEdgeInsetsMake(0, 0, 0, 0)
let defaultImageModeInsets = UIEdgeInsetsMake(6, 0, -6, 0)
let defaultSmallTitleModeOffset = UIOffsetMake(0, 20)
let defaultOffset = UIOffsetMake(0, 00)
let tabColor = UIColor(red: 169 / 255, green: 79 / 255, blue: 152 / 255, alpha: 1.0)
let tabColor = UIColor(red: 169/255, green: 79/255, blue: 152/255, alpha: 1.0)
@objc protocol AdaptiveApperanceProtocol {
optional func setFontToAdaptiveButton(font: UIFont)
@@ -35,53 +37,58 @@ let selected = "Selected"
let highlighted = "Higlihted"
class AdaptiveButtonsStateManager: NSObject {
convenience init(state: AdaptiveState, buttonsAray: [AdaptiveApperanceProtocol], buttonsApperance: [AdaptiveButtonApperance]) {
convenience init (state:AdaptiveState,buttonsAray:[AdaptiveApperanceProtocol],buttonsApperance:[AdaptiveButtonApperance]){
self.init()
setButtonsState(state, buttonsAray: buttonsAray, buttonsApperance: buttonsApperance)
self.setButtonsState(state, buttonsAray: buttonsAray, buttonsApperance: buttonsApperance)
}
func setButtonsState(state: AdaptiveState, buttonsAray: [AdaptiveApperanceProtocol], buttonsApperance: [AdaptiveButtonApperance]) {
var state: String = state.currentItemState!
func setButtonsState(state:AdaptiveState,buttonsAray:[AdaptiveApperanceProtocol],buttonsApperance:[AdaptiveButtonApperance]){
var state:String = state.currentItemState!
var countElements = buttonsAray.count > buttonsApperance.count ? buttonsApperance.count : buttonsAray.count
for var index = 0; index < countElements; ++index {
println("index is \(index)")
println("buttons count array is \(buttonsAray.count)")
var button: AdaptiveApperanceProtocol = buttonsAray[index]
var button :AdaptiveApperanceProtocol = buttonsAray[index]
var buttonApperance = buttonsApperance[index]
button.setTitleToAdaptiveButton!(buttonApperance.getButonTitleForState(state))
button.setFontToAdaptiveButton!(buttonApperance.getButonTitleFontForState(state))
if let image = buttonApperance.getButonImageForState(state) {
button.setImageToAdaptiveButton?(image)
}
if let selectedImage = buttonApperance.getButonImageForState(state + selected) {
if let selectedImage = buttonApperance.getButonImageForState(state+selected) {
button.setSelectedImageToAdaptiveButton?(selectedImage)
}
if let highlightedImage = buttonApperance.getButonImageForState(state + highlighted) {
button.setHighlightedToAdaptiveButton?(highlightedImage)
if let highlightedImage = buttonApperance.getButonImageForState(state+highlighted) {
button.setHighlightedToAdaptiveButton?(highlightedImage)
}
if let backgroundImage = buttonApperance.getButonImageForState(state) {
button.setBackgroundImageToAdaptiveButton?(backgroundImage)
}
if let imageInset = buttonApperance.getImageInsetsForState(state) {
button.setImageInsetsToAdaptiveButton?(imageInset)
}
if let titleOffset = buttonApperance.getTitleOffsetForState(state) {
button.setTitleOffsetToAdaptiveButton?(titleOffset)
}
if let titleColor = buttonApperance.getTitleColorForState(state) {
button.setTitleColorToAdaptiveButton?(titleColor)
}
}
}
}
@@ -0,0 +1,53 @@
//
// AdaptiveDateState.swift
// AdaptiveTabBarControllerSample
//
// Created by Arcilite on 18.09.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
let kSmallTitleAdaptiveState = "kImageAdaptiveState"
let kImageAdaptiveState = "kNormalImageAdaptiveState"
class AdaptiveDateState: AdaptiveState {
override init(){
super.init()
super.addNewCustomAdaptiveStates([kSmallTitleAdaptiveState,kImageAdaptiveState])
}
convenience init(installDate:NSDate, currentDate:NSDate,countDaysToSmallTextState:Int,countDaysToImageState:Int) {
self.init()
var remainsDays = self.daysBetweenDates(installDate,currentDate: currentDate)
self.currentItemState = self.stateRemainDays(remainsDays,countDaysToSmallTextState:countDaysToSmallTextState,countDaysToImageState:countDaysToImageState)
print(currentItemState)
}
private func daysBetweenDates(installDate:NSDate, currentDate:NSDate) -> Int{
let cal = NSCalendar.currentCalendar()
let unit:NSCalendarUnit = .DayCalendarUnit
let components = cal.components(unit, fromDate: installDate, toDate: currentDate, options: nil)
return components.day+1;
}
private func stateRemainDays (remainDays:Int,countDaysToSmallTextState:Int,countDaysToImageState:Int)->String{
var mode:String = kDefaultAdaptiveState
print(" DAYS \(remainDays) ")
if remainDays > countDaysToSmallTextState && remainDays < countDaysToImageState{
mode = kSmallTitleAdaptiveState
}else if remainDays > countDaysToImageState {
mode = kImageAdaptiveState
}
print(mode)
return mode
}
}
@@ -0,0 +1,38 @@
//
// AdaptiveController.swift
// AdaptiveTabBarControllerSample
//
// Created by Arcilite on 17.09.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
let kDefaultAdaptiveState:String = "DefaultAdaptiveState"
class AdaptiveState: NSObject {
var currentItemState:NSString?
var buttonStates:[String] = [String]()
override init(){
super.init()
self.currentItemState = kDefaultAdaptiveState
self.addNewCustomAdaptiveStates([kDefaultAdaptiveState])
}
internal func addNewCustomAdaptiveStates(customAdaptiveStates:Array<String>){
self.buttonStates+customAdaptiveStates
}
}
@@ -0,0 +1,67 @@
//
// AppDelegate.swift
// adaptive-tab-bar
//
// Created by Arcilite on 15.09.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
import CoreGraphics
import QuartzCore
import AdaptiveController
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
UITabBar.appearance().selectedImageTintColor = tabColor
UITabBar.appearance().barTintColor = UIColor.clearColor()
UITabBar.appearance().shadowImage = UIImage()
UITabBar.appearance().selectionIndicatorImage = UIImage(named: "backgroud_tab")
UITabBar.appearance().itemPositioning = UITabBarItemPositioning.Fill
UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.whiteColor()],forState: UIControlState.Normal)
UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: tabColor],forState: UIControlState.Selected)
var tabBarController:UITabBarController = self.window?.rootViewController as UITabBarController
var tabBar:UITabBar = tabBarController.tabBar
tabBar.barTintColor = tabColor
tabBar.clipsToBounds = true
var installDate = NSDate(dateString:"2014-10-22")
var adaptiveState = AdaptiveDateState(installDate: installDate,currentDate:NSDate(),countDaysToSmallTextState:countDaysToSmallTextState,countDaysToImageState:countDaysToImageState)
let path = NSBundle.mainBundle().pathForResource("appearances", ofType: "plist")
var serializer = DictioanarySerializer()
var butonsApperances = serializer.parseFromPlistToButtonAppearances(path!)
var arrayButtons = tabBar.items as [UITabBarItem]
AdaptiveButtonsStateManager.setupButtonsAppearanceFromState(adaptiveState,buttonsAray:arrayButtons ,buttonsAppearances: butonsApperances)
return true
}
}
@@ -1,12 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13770" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="6250" systemVersion="14A389" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13770"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6244"/>
<capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
@@ -21,21 +17,21 @@
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Adaptive Tab Bar Example" textAlignment="center" lineBreakMode="middleTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="kId-c2-rCX">
<rect key="frame" x="20" y="197" width="441" height="86"/>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="example-date-adaptive-tab-bar" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="kId-c2-rCX">
<rect key="frame" x="20" y="140" width="441" height="43"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="kId-c2-rCX" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="ILg-eR-AQZ"/>
<constraint firstItem="kId-c2-rCX" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="bottom" multiplier="1/3" constant="1" id="5cJ-9S-tgC"/>
<constraint firstAttribute="centerX" secondItem="kId-c2-rCX" secondAttribute="centerX" id="Koa-jz-hwk"/>
<constraint firstAttribute="bottom" secondItem="8ie-xW-0ye" secondAttribute="bottom" constant="20" id="Kzo-t9-V3l"/>
<constraint firstAttribute="trailing" secondItem="kId-c2-rCX" secondAttribute="trailing" constant="19" id="LVr-jp-nLn"/>
<constraint firstItem="8ie-xW-0ye" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="MfP-vx-nX0"/>
<constraint firstAttribute="centerX" secondItem="8ie-xW-0ye" secondAttribute="centerX" id="ZEH-qu-HZ9"/>
<constraint firstItem="kId-c2-rCX" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="fvb-Df-36g"/>
<constraint firstAttribute="trailing" secondItem="8ie-xW-0ye" secondAttribute="trailing" constant="19" id="otg-6R-EhQ"/>
</constraints>
<nil key="simulatedStatusBarMetrics"/>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
@@ -0,0 +1,220 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6250" systemVersion="14A389" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="49e-Tb-3d3">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6244"/>
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
</dependencies>
<scenes>
<!--First-->
<scene sceneID="hNz-n2-bh7">
<objects>
<viewController id="9pv-A4-QxB" customClass="WatchViewController" customModule="example_date_adaptive_tab_bar" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Ia1-K6-d13"/>
<viewControllerLayoutGuide type="bottom" id="4ug-Mw-9AY"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="tsR-hK-woN">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" text="First View" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="KQZ-1w-vlD">
<rect key="frame" x="221" y="279" width="157.5" height="41.5"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="36"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Loaded by FirstViewController" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="A5M-7J-77L">
<rect key="frame" x="203" y="329" width="194.5" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="background" translatesAutoresizingMaskIntoConstraints="NO" id="bTY-b5-lYl">
<rect key="frame" x="0.0" y="0.0" width="640" height="551"/>
</imageView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="4ug-Mw-9AY" firstAttribute="top" secondItem="bTY-b5-lYl" secondAttribute="bottom" id="57C-0I-UhP"/>
<constraint firstAttribute="centerX" secondItem="KQZ-1w-vlD" secondAttribute="centerX" id="6BV-lF-sBN"/>
<constraint firstItem="A5M-7J-77L" firstAttribute="top" secondItem="KQZ-1w-vlD" secondAttribute="bottom" constant="8" symbolic="YES" id="cfb-er-3JN"/>
<constraint firstItem="A5M-7J-77L" firstAttribute="centerX" secondItem="KQZ-1w-vlD" secondAttribute="centerX" id="e1l-AV-tCB"/>
<constraint firstAttribute="centerY" secondItem="KQZ-1w-vlD" secondAttribute="centerY" id="exm-UA-ej4"/>
<constraint firstItem="bTY-b5-lYl" firstAttribute="top" secondItem="tsR-hK-woN" secondAttribute="top" id="kWQ-y6-H6g"/>
<constraint firstAttribute="trailing" secondItem="bTY-b5-lYl" secondAttribute="trailing" constant="-40" id="sYy-Hj-V1a"/>
<constraint firstItem="bTY-b5-lYl" firstAttribute="leading" secondItem="tsR-hK-woN" secondAttribute="leading" id="ueh-EO-Puf"/>
</constraints>
</view>
<tabBarItem key="tabBarItem" title="First" id="acW-dT-cKf" customClass="AdaptiveTabBarItem" customModule="example_date_adaptive_tab_bar" customModuleProvider="target"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="W5J-7L-Pyd" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="750" y="-612.5"/>
</scene>
<!--Second-->
<scene sceneID="wg7-f3-ORb">
<objects>
<viewController id="8rJ-Kc-sve" customClass="MessageViewController" customModule="example_date_adaptive_tab_bar" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="L7p-HK-0SC"/>
<viewControllerLayoutGuide type="bottom" id="Djb-ko-YwX"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="QS5-Rx-YEW">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" text="Second View" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="zEq-FU-wV5">
<rect key="frame" x="195" y="279" width="209.5" height="41.5"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="36"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Loaded by SecondViewController" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NDk-cv-Gan">
<rect key="frame" x="192" y="329" width="215.5" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="background" translatesAutoresizingMaskIntoConstraints="NO" id="d3m-k5-qah">
<rect key="frame" x="0.0" y="0.0" width="640" height="551"/>
</imageView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="d3m-k5-qah" secondAttribute="trailing" constant="-40" id="8KS-iG-8XT"/>
<constraint firstItem="NDk-cv-Gan" firstAttribute="top" secondItem="zEq-FU-wV5" secondAttribute="bottom" constant="8" symbolic="YES" id="Day-4N-Vmt"/>
<constraint firstItem="NDk-cv-Gan" firstAttribute="centerX" secondItem="zEq-FU-wV5" secondAttribute="centerX" id="JgO-Fn-dHn"/>
<constraint firstItem="d3m-k5-qah" firstAttribute="leading" secondItem="QS5-Rx-YEW" secondAttribute="leading" id="X9o-k0-h62"/>
<constraint firstAttribute="centerX" secondItem="zEq-FU-wV5" secondAttribute="centerX" id="qqM-NS-xev"/>
<constraint firstAttribute="centerY" secondItem="zEq-FU-wV5" secondAttribute="centerY" id="qzY-Ky-pLD"/>
<constraint firstItem="d3m-k5-qah" firstAttribute="top" secondItem="QS5-Rx-YEW" secondAttribute="top" id="tA2-Eh-fSb"/>
<constraint firstItem="Djb-ko-YwX" firstAttribute="top" secondItem="d3m-k5-qah" secondAttribute="bottom" id="zws-Zn-RsZ"/>
</constraints>
</view>
<tabBarItem key="tabBarItem" title="Second" image="second" id="cPa-gy-q4n" customClass="AdaptiveTabBarItem" customModule="example_count_launches_adaptive_tabbar"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="4Nw-L8-lE0" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="910" y="87"/>
</scene>
<!--Tab Bar View Controller-->
<scene sceneID="yl2-sM-qoP">
<objects>
<tabBarController id="49e-Tb-3d3" customClass="TabBarViewController" customModule="example_date_adaptive_tab_bar" customModuleProvider="target" sceneMemberID="viewController">
<nil key="simulatedBottomBarMetrics"/>
<tabBar key="tabBar" contentMode="scaleToFill" id="W28-zg-YXA">
<rect key="frame" x="0.0" y="975" width="768" height="49"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</tabBar>
<connections>
<segue destination="9pv-A4-QxB" kind="relationship" relationship="viewControllers" id="u7Y-xg-7CH"/>
<segue destination="8rJ-Kc-sve" kind="relationship" relationship="viewControllers" id="lzU-1b-eKA"/>
<segue destination="BiK-DX-JK5" kind="relationship" relationship="viewControllers" id="8uc-KI-0GB"/>
<segue destination="aXk-96-nwf" kind="relationship" relationship="viewControllers" id="XuY-Eq-eiX"/>
<segue destination="BgE-dr-gW8" kind="relationship" relationship="viewControllers" id="j4H-uh-BdI"/>
</connections>
</tabBarController>
<placeholder placeholderIdentifier="IBFirstResponder" id="HuB-VB-40B" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="0.0" y="0.0"/>
</scene>
<!--Item-->
<scene sceneID="60i-zg-cAx">
<objects>
<viewController id="BiK-DX-JK5" customClass="UserViewController" customModule="example_date_adaptive_tab_bar" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="oSS-7K-rER"/>
<viewControllerLayoutGuide type="bottom" id="Ba7-rp-yUE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="Z9a-At-6Ll">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="background" translatesAutoresizingMaskIntoConstraints="NO" id="jtr-dW-8XE">
<rect key="frame" x="0.0" y="0.0" width="640" height="555"/>
</imageView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="jtr-dW-8XE" secondAttribute="trailing" constant="-40" id="68Q-YE-GnZ"/>
<constraint firstItem="jtr-dW-8XE" firstAttribute="leading" secondItem="Z9a-At-6Ll" secondAttribute="leading" id="9Lc-1F-lVY"/>
<constraint firstAttribute="bottom" secondItem="jtr-dW-8XE" secondAttribute="bottom" constant="45" id="iHg-vq-ehR"/>
<constraint firstItem="jtr-dW-8XE" firstAttribute="top" secondItem="Z9a-At-6Ll" secondAttribute="top" id="zds-Uy-hOW"/>
</constraints>
</view>
<tabBarItem key="tabBarItem" title="Item" id="g86-Lf-lWF" customClass="AdaptiveTabBarItem" customModule="example_date_adaptive_tab_bar" customModuleProvider="target"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Ds1-lP-WuT" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="60" y="838"/>
</scene>
<!--Item-->
<scene sceneID="RUI-wr-KlE">
<objects>
<viewController id="aXk-96-nwf" customClass="MenuViewController" customModule="example_date_adaptive_tab_bar" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Aha-rh-ib6"/>
<viewControllerLayoutGuide type="bottom" id="aNR-L8-QaD"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="UyR-nf-sp6">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="background" translatesAutoresizingMaskIntoConstraints="NO" id="GGw-pn-6CX">
<rect key="frame" x="0.0" y="0.0" width="640" height="551"/>
</imageView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="GGw-pn-6CX" firstAttribute="top" secondItem="UyR-nf-sp6" secondAttribute="topMargin" id="JNr-AP-tWr"/>
<constraint firstItem="GGw-pn-6CX" firstAttribute="top" secondItem="UyR-nf-sp6" secondAttribute="topMargin" id="MSj-7q-ac7"/>
<constraint firstItem="GGw-pn-6CX" firstAttribute="leading" secondItem="UyR-nf-sp6" secondAttribute="leading" id="SZF-JG-V57"/>
<constraint firstItem="aNR-L8-QaD" firstAttribute="top" secondItem="GGw-pn-6CX" secondAttribute="bottom" id="YDT-AA-Wjy"/>
<constraint firstItem="aNR-L8-QaD" firstAttribute="top" secondItem="GGw-pn-6CX" secondAttribute="bottom" id="nys-sX-kRN"/>
</constraints>
</view>
<tabBarItem key="tabBarItem" title="Item" id="RnB-fU-3RS" customClass="AdaptiveTabBarItem" customModule="example_date_adaptive_tab_bar" customModuleProvider="target"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Hsc-p3-elF" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="689" y="838"/>
</scene>
<!--Item-->
<scene sceneID="B98-FR-Rjt">
<objects>
<viewController id="BgE-dr-gW8" customClass="MoreViewController" customModule="example_date_adaptive_tab_bar" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="r9s-DG-v8Y"/>
<viewControllerLayoutGuide type="bottom" id="mju-qR-F4m"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="dgq-yB-Neb">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="background" translatesAutoresizingMaskIntoConstraints="NO" id="fel-JW-y8K">
<rect key="frame" x="16" y="0.0" width="568" height="551"/>
</imageView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="mju-qR-F4m" firstAttribute="top" secondItem="fel-JW-y8K" secondAttribute="bottom" id="czL-kW-Gi5"/>
<constraint firstItem="fel-JW-y8K" firstAttribute="top" secondItem="dgq-yB-Neb" secondAttribute="top" id="h6H-Nt-0EU"/>
<constraint firstItem="fel-JW-y8K" firstAttribute="leading" secondItem="dgq-yB-Neb" secondAttribute="leading" constant="16" id="lvq-kK-shl"/>
<constraint firstAttribute="trailing" secondItem="fel-JW-y8K" secondAttribute="trailing" constant="16" id="mnN-oR-w60"/>
</constraints>
</view>
<tabBarItem key="tabBarItem" title="Item" id="uWZ-JL-cND" customClass="AdaptiveTabBarItem" customModule="example_date_adaptive_tab_bar" customModuleProvider="target"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="xAq-zT-Wnn" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1344" y="838"/>
</scene>
</scenes>
<resources>
<image name="background" width="640" height="1136"/>
<image name="second" width="30" height="30"/>
</resources>
</document>
@@ -0,0 +1,69 @@
//
// AdaptiveTabBarItem.swift
// adaptive-tab-bar
//
// Created by Arcilite on 19.09.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
import AdaptiveController
extension UITabBarItem : AdaptiveApperanceProtocol {
// override init(){
// super.init()
//
// }
public func setTitleToAdaptiveButton(text: NSString){
self.title = text
}
func setImageToAdaptiveButton(image: UIImage){
self.image = image
}
public func setSelectedImageToAdaptiveButton(image: UIImage?){
self.selectedImage = image
}
public func setImageInsetsToAdaptiveButton(insets: UIEdgeInsets){
self.imageInsets = insets
}
public func setTitleOffsetToAdaptiveButton(offset: UIOffset){
self.setTitlePositionAdjustment(offset)
}
// public func setTitleColorToAdaptiveButton(color: UIColor){
// var dictionary = self.titleTextAttributesForState(UIControlState.Normal)
// dictionary.updateValue(color, forKey: NSForegroundColorAttributeName)
// self.setTitleTextAttributes(dictionary, forState: UIControlState.Normal)
// }
//
// public func setFontToAdaptiveButton(font: UIFont){
//
// self.setTitleTextAttributes(NSDictionary(objects: [font], forKeys: [NSFontAttributeName]), forState: UIControlState.Normal)
//
// }
//
public func setFontToAdaptiveButton(font: UIFont , controlState:UIControlState){
self.setTitleTextAttributes(NSDictionary(objects: [font], forKeys: [NSFontAttributeName]), forState: controlState)
}
public func setTitleColorToAdaptiveButton(color: UIColor, controlState:UIControlState){
var dictionary = self.titleTextAttributesForState(controlState)
dictionary.updateValue(color, forKey: NSForegroundColorAttributeName)
self.setTitleTextAttributes(dictionary, forState: controlState)
}
}
@@ -0,0 +1,29 @@
//
// TabBarViewController.swift
// adaptive-tab-bar
//
// Created by Arcilite on 22.09.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
import QuartzCore
class TabBarViewController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
if (UIDevice().systemVersion as NSString).floatValue >= 7.0{
for tbi in self.tabBar.items as [UITabBarItem] {
tbi.image = tbi.image?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
@@ -0,0 +1,32 @@
//
// DateExtension.swift
// adaptive-tab-bar
//
// Created by Arcilite on 16.09.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
extension NSDate{
convenience init(dateString:String) {
let dateStringFormatter = NSDateFormatter()
dateStringFormatter.dateFormat = "yyyy-MM-dd"
dateStringFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
let d = dateStringFormatter.dateFromString(dateString)
self.init(timeInterval:0, sinceDate:d!)
}
func daysBetween(dayFrom:NSDate,dayTo:NSDate) -> Int{
let cal = NSCalendar.currentCalendar()
let unit:NSCalendarUnit = .DayCalendarUnit
let components = cal.components(unit, fromDate: dayFrom, toDate: dayTo, options: nil)
return components.day+1;
}
}
@@ -1,15 +1,5 @@
{
"images" : [
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "29x29",
@@ -39,11 +29,6 @@
"idiom" : "iphone",
"size" : "60x60",
"scale" : "3x"
},
{
"idiom" : "ios-marketing",
"size" : "1024x1024",
"scale" : "1x"
}
],
"info" : {
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

@@ -6,8 +6,8 @@
},
{
"idiom" : "universal",
"filename" : "backgroud_tab@2x.png",
"scale" : "2x"
"scale" : "2x",
"filename" : "backgroud_tab@2x.png"
},
{
"idiom" : "universal",
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

@@ -4,12 +4,10 @@
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>Adaptive Controller</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<string>ramotion.$(PRODUCT_NAME:rfc1034identifier)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
@@ -32,10 +30,6 @@
<array>
<string>armv7</string>
</array>
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>UIStatusBarTintParameters</key>
<dict>
<key>UINavigationBar</key>
@@ -0,0 +1,35 @@
//
// FourthViewController.swift
// adaptive-tab-bar
//
// Created by Arcilite on 22.09.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
class MenuViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
}
@@ -0,0 +1,25 @@
//
// SecondViewController.swift
// adaptive-tab-bar
//
// Created by Arcilite on 15.09.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
class MessageViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
@@ -0,0 +1,35 @@
//
// FifthViewController.swift
// adaptive-tab-bar
//
// Created by Arcilite on 22.09.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
class MoreViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
}
@@ -0,0 +1,35 @@
//
// ThirdViewController.swift
// adaptive-tab-bar
//
// Created by Arcilite on 22.09.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
class UserViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
}
@@ -0,0 +1,25 @@
//
// FirstViewController.swift
// adaptive-tab-bar
//
// Created by Arcilite on 15.09.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
class WatchViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
@@ -0,0 +1,871 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>kDefaultAdaptiveState</key>
<dict>
<key>UIControlStateNormal</key>
<dict>
<key>backgroundColor</key>
<dict>
<key>alpha</key>
<real>0</real>
<key>blue</key>
<real>0</real>
<key>green</key>
<real>0</real>
<key>red</key>
<real>0</real>
</dict>
<key>color</key>
<dict>
<key>alpha</key>
<real>1</real>
<key>blue</key>
<real>1</real>
<key>green</key>
<real>1</real>
<key>red</key>
<real>1</real>
</dict>
<key>font</key>
<dict>
<key>fontName</key>
<string>Helvetica</string>
<key>fontSize</key>
<real>14</real>
</dict>
<key>imageInsets</key>
<dict>
<key>bottom</key>
<real>0</real>
<key>left</key>
<real>0</real>
<key>right</key>
<real>0</real>
<key>top</key>
<real>0</real>
</dict>
<key>imageName</key>
<string>watch</string>
<key>title</key>
<string>watch</string>
<key>titleOffset</key>
<dict>
<key>horizontal</key>
<real>0</real>
<key>vertical</key>
<real>0</real>
</dict>
</dict>
</dict>
<key>kImageAdaptiveState</key>
<dict>
<key>UIControlStateNormal</key>
<dict>
<key>backgroundColor</key>
<dict>
<key>alpha</key>
<real>0</real>
<key>blue</key>
<real>0</real>
<key>green</key>
<real>0</real>
<key>red</key>
<real>0</real>
</dict>
<key>color</key>
<dict>
<key>alpha</key>
<real>1</real>
<key>blue</key>
<real>0</real>
<key>green</key>
<real>0</real>
<key>red</key>
<real>0</real>
</dict>
<key>font</key>
<dict>
<key>fontName</key>
<string>Helvetica</string>
<key>fontSize</key>
<real>14</real>
</dict>
<key>imageInsets</key>
<dict>
<key>bottom</key>
<real>-6</real>
<key>left</key>
<real>0</real>
<key>right</key>
<real>0</real>
<key>top</key>
<real>6</real>
</dict>
<key>imageName</key>
<string>watch_bigimage</string>
<key>title</key>
<string></string>
<key>titleOffset</key>
<dict>
<key>horizontal</key>
<real>0</real>
<key>vertical</key>
<real>0</real>
</dict>
</dict>
</dict>
<key>kSmallTitleAdaptiveState</key>
<dict>
<key>UIControlStateNormal</key>
<dict>
<key>backgroundColor</key>
<dict>
<key>alpha</key>
<real>0</real>
<key>blue</key>
<real>0</real>
<key>green</key>
<real>0</real>
<key>red</key>
<real>0</real>
</dict>
<key>color</key>
<dict>
<key>alpha</key>
<real>1</real>
<key>blue</key>
<real>1</real>
<key>green</key>
<real>1</real>
<key>red</key>
<real>1</real>
</dict>
<key>font</key>
<dict>
<key>fontName</key>
<string>Helvetica</string>
<key>fontSize</key>
<real>10</real>
</dict>
<key>imageInsets</key>
<dict>
<key>bottom</key>
<real>0</real>
<key>left</key>
<real>0</real>
<key>right</key>
<real>0</real>
<key>top</key>
<real>0</real>
</dict>
<key>imageName</key>
<string>watch_smalltitle</string>
<key>title</key>
<string>watch</string>
<key>titleOffset</key>
<dict>
<key>horizontal</key>
<real>0</real>
<key>vertical</key>
<real>0</real>
</dict>
</dict>
</dict>
</dict>
<dict>
<key>kDefaultAdaptiveState</key>
<dict>
<key>UIControlStateNormal</key>
<dict>
<key>backgroundColor</key>
<dict>
<key>alpha</key>
<real>0</real>
<key>blue</key>
<real>0</real>
<key>green</key>
<real>0</real>
<key>red</key>
<real>0</real>
</dict>
<key>color</key>
<dict>
<key>alpha</key>
<real>1</real>
<key>blue</key>
<real>1</real>
<key>green</key>
<real>1</real>
<key>red</key>
<real>1</real>
</dict>
<key>font</key>
<dict>
<key>fontName</key>
<string>Helvetica</string>
<key>fontSize</key>
<real>14</real>
</dict>
<key>imageInsets</key>
<dict>
<key>bottom</key>
<real>0</real>
<key>left</key>
<real>0</real>
<key>right</key>
<real>0</real>
<key>top</key>
<real>0</real>
</dict>
<key>imageName</key>
<string>messages</string>
<key>title</key>
<string>message</string>
<key>titleOffset</key>
<dict>
<key>horizontal</key>
<real>0</real>
<key>vertical</key>
<real>0</real>
</dict>
</dict>
</dict>
<key>kImageAdaptiveState</key>
<dict>
<key>UIControlStateNormal</key>
<dict>
<key>backgroundColor</key>
<dict>
<key>alpha</key>
<real>0</real>
<key>blue</key>
<real>0</real>
<key>green</key>
<real>0</real>
<key>red</key>
<real>0</real>
</dict>
<key>color</key>
<dict>
<key>alpha</key>
<real>1</real>
<key>blue</key>
<real>0</real>
<key>green</key>
<real>0</real>
<key>red</key>
<real>0</real>
</dict>
<key>font</key>
<dict>
<key>fontName</key>
<string>Helvetica</string>
<key>fontSize</key>
<real>14</real>
</dict>
<key>imageInsets</key>
<dict>
<key>bottom</key>
<real>-6</real>
<key>left</key>
<real>0</real>
<key>right</key>
<real>0</real>
<key>top</key>
<real>6</real>
</dict>
<key>imageName</key>
<string>messages_bigimage</string>
<key>title</key>
<string></string>
<key>titleOffset</key>
<dict>
<key>horizontal</key>
<real>0</real>
<key>vertical</key>
<real>0</real>
</dict>
</dict>
</dict>
<key>kSmallTitleAdaptiveState</key>
<dict>
<key>UIControlStateNormal</key>
<dict>
<key>backgroundColor</key>
<dict>
<key>alpha</key>
<real>0</real>
<key>blue</key>
<real>0</real>
<key>green</key>
<real>0</real>
<key>red</key>
<real>0</real>
</dict>
<key>color</key>
<dict>
<key>alpha</key>
<real>1</real>
<key>blue</key>
<real>1</real>
<key>green</key>
<real>1</real>
<key>red</key>
<real>1</real>
</dict>
<key>font</key>
<dict>
<key>fontName</key>
<string>Helvetica</string>
<key>fontSize</key>
<real>10</real>
</dict>
<key>imageInsets</key>
<dict>
<key>bottom</key>
<real>0</real>
<key>left</key>
<real>0</real>
<key>right</key>
<real>0</real>
<key>top</key>
<real>0</real>
</dict>
<key>imageName</key>
<string>messages_smalltitle</string>
<key>title</key>
<string>message</string>
<key>titleOffset</key>
<dict>
<key>horizontal</key>
<real>0</real>
<key>vertical</key>
<real>0</real>
</dict>
</dict>
</dict>
</dict>
<dict>
<key>kDefaultAdaptiveState</key>
<dict>
<key>UIControlStateNormal</key>
<dict>
<key>backgroundColor</key>
<dict>
<key>alpha</key>
<real>0</real>
<key>blue</key>
<real>0</real>
<key>green</key>
<real>0</real>
<key>red</key>
<real>0</real>
</dict>
<key>color</key>
<dict>
<key>alpha</key>
<real>1</real>
<key>blue</key>
<real>1</real>
<key>green</key>
<real>1</real>
<key>red</key>
<real>1</real>
</dict>
<key>font</key>
<dict>
<key>fontName</key>
<string>Helvetica</string>
<key>fontSize</key>
<real>14</real>
</dict>
<key>imageInsets</key>
<dict>
<key>bottom</key>
<real>0</real>
<key>left</key>
<real>0</real>
<key>right</key>
<real>0</real>
<key>top</key>
<real>0</real>
</dict>
<key>imageName</key>
<string>man</string>
<key>title</key>
<string>user</string>
<key>titleOffset</key>
<dict>
<key>horizontal</key>
<real>0</real>
<key>vertical</key>
<real>0</real>
</dict>
</dict>
</dict>
<key>kImageAdaptiveState</key>
<dict>
<key>UIControlStateNormal</key>
<dict>
<key>backgroundColor</key>
<dict>
<key>alpha</key>
<real>0</real>
<key>blue</key>
<real>0</real>
<key>green</key>
<real>0</real>
<key>red</key>
<real>0</real>
</dict>
<key>color</key>
<dict>
<key>alpha</key>
<real>1</real>
<key>blue</key>
<real>0</real>
<key>green</key>
<real>0</real>
<key>red</key>
<real>0</real>
</dict>
<key>font</key>
<dict>
<key>fontName</key>
<string>Helvetica</string>
<key>fontSize</key>
<real>14</real>
</dict>
<key>imageInsets</key>
<dict>
<key>bottom</key>
<real>-6</real>
<key>left</key>
<real>0</real>
<key>right</key>
<real>0</real>
<key>top</key>
<real>6</real>
</dict>
<key>imageName</key>
<string>man_bigimage</string>
<key>title</key>
<string></string>
<key>titleOffset</key>
<dict>
<key>horizontal</key>
<real>0</real>
<key>vertical</key>
<real>0</real>
</dict>
</dict>
</dict>
<key>kSmallTitleAdaptiveState</key>
<dict>
<key>UIControlStateNormal</key>
<dict>
<key>backgroundColor</key>
<dict>
<key>alpha</key>
<real>0</real>
<key>blue</key>
<real>0</real>
<key>green</key>
<real>0</real>
<key>red</key>
<real>0</real>
</dict>
<key>color</key>
<dict>
<key>alpha</key>
<real>1</real>
<key>blue</key>
<real>1</real>
<key>green</key>
<real>1</real>
<key>red</key>
<real>1</real>
</dict>
<key>font</key>
<dict>
<key>fontName</key>
<string>Helvetica</string>
<key>fontSize</key>
<real>10</real>
</dict>
<key>imageInsets</key>
<dict>
<key>bottom</key>
<real>0</real>
<key>left</key>
<real>0</real>
<key>right</key>
<real>0</real>
<key>top</key>
<real>0</real>
</dict>
<key>imageName</key>
<string>man_smalltitle</string>
<key>title</key>
<string>user</string>
<key>titleOffset</key>
<dict>
<key>horizontal</key>
<real>0</real>
<key>vertical</key>
<real>0</real>
</dict>
</dict>
</dict>
</dict>
<dict>
<key>kDefaultAdaptiveState</key>
<dict>
<key>UIControlStateNormal</key>
<dict>
<key>backgroundColor</key>
<dict>
<key>alpha</key>
<real>0</real>
<key>blue</key>
<real>0</real>
<key>green</key>
<real>0</real>
<key>red</key>
<real>0</real>
</dict>
<key>color</key>
<dict>
<key>alpha</key>
<real>1</real>
<key>blue</key>
<real>1</real>
<key>green</key>
<real>1</real>
<key>red</key>
<real>1</real>
</dict>
<key>font</key>
<dict>
<key>fontName</key>
<string>Helvetica</string>
<key>fontSize</key>
<real>14</real>
</dict>
<key>imageInsets</key>
<dict>
<key>bottom</key>
<real>0</real>
<key>left</key>
<real>0</real>
<key>right</key>
<real>0</real>
<key>top</key>
<real>0</real>
</dict>
<key>imageName</key>
<string>menu</string>
<key>title</key>
<string>dial</string>
<key>titleOffset</key>
<dict>
<key>horizontal</key>
<real>0</real>
<key>vertical</key>
<real>0</real>
</dict>
</dict>
</dict>
<key>kImageAdaptiveState</key>
<dict>
<key>UIControlStateNormal</key>
<dict>
<key>backgroundColor</key>
<dict>
<key>alpha</key>
<real>0</real>
<key>blue</key>
<real>0</real>
<key>green</key>
<real>0</real>
<key>red</key>
<real>0</real>
</dict>
<key>color</key>
<dict>
<key>alpha</key>
<real>1</real>
<key>blue</key>
<real>0</real>
<key>green</key>
<real>0</real>
<key>red</key>
<real>0</real>
</dict>
<key>font</key>
<dict>
<key>fontName</key>
<string>Helvetica</string>
<key>fontSize</key>
<real>14</real>
</dict>
<key>imageInsets</key>
<dict>
<key>bottom</key>
<real>-6</real>
<key>left</key>
<real>0</real>
<key>right</key>
<real>0</real>
<key>top</key>
<real>6</real>
</dict>
<key>imageName</key>
<string>menu_bigimage</string>
<key>title</key>
<string></string>
<key>titleOffset</key>
<dict>
<key>horizontal</key>
<real>0</real>
<key>vertical</key>
<real>0</real>
</dict>
</dict>
</dict>
<key>kSmallTitleAdaptiveState</key>
<dict>
<key>UIControlStateNormal</key>
<dict>
<key>backgroundColor</key>
<dict>
<key>alpha</key>
<real>0</real>
<key>blue</key>
<real>0</real>
<key>green</key>
<real>0</real>
<key>red</key>
<real>0</real>
</dict>
<key>color</key>
<dict>
<key>alpha</key>
<real>1</real>
<key>blue</key>
<real>1</real>
<key>green</key>
<real>1</real>
<key>red</key>
<real>1</real>
</dict>
<key>font</key>
<dict>
<key>fontName</key>
<string>Helvetica</string>
<key>fontSize</key>
<real>10</real>
</dict>
<key>imageInsets</key>
<dict>
<key>bottom</key>
<real>0</real>
<key>left</key>
<real>0</real>
<key>right</key>
<real>0</real>
<key>top</key>
<real>0</real>
</dict>
<key>imageName</key>
<string>menu_smalltitle</string>
<key>title</key>
<string>dial</string>
<key>titleOffset</key>
<dict>
<key>horizontal</key>
<real>0</real>
<key>vertical</key>
<real>0</real>
</dict>
</dict>
</dict>
</dict>
<dict>
<key>kDefaultAdaptiveState</key>
<dict>
<key>UIControlStateNormal</key>
<dict>
<key>backgroundColor</key>
<dict>
<key>alpha</key>
<real>0</real>
<key>blue</key>
<real>0</real>
<key>green</key>
<real>0</real>
<key>red</key>
<real>0</real>
</dict>
<key>color</key>
<dict>
<key>alpha</key>
<real>1</real>
<key>blue</key>
<real>1</real>
<key>green</key>
<real>1</real>
<key>red</key>
<real>1</real>
</dict>
<key>font</key>
<dict>
<key>fontName</key>
<string>Helvetica</string>
<key>fontSize</key>
<real>14</real>
</dict>
<key>imageInsets</key>
<dict>
<key>bottom</key>
<real>0</real>
<key>left</key>
<real>0</real>
<key>right</key>
<real>0</real>
<key>top</key>
<real>0</real>
</dict>
<key>imageName</key>
<string>more</string>
<key>title</key>
<string>more</string>
<key>titleOffset</key>
<dict>
<key>horizontal</key>
<real>0</real>
<key>vertical</key>
<real>0</real>
</dict>
</dict>
</dict>
<key>kImageAdaptiveState</key>
<dict>
<key>UIControlStateNormal</key>
<dict>
<key>backgroundColor</key>
<dict>
<key>alpha</key>
<real>0</real>
<key>blue</key>
<real>0</real>
<key>green</key>
<real>0</real>
<key>red</key>
<real>0</real>
</dict>
<key>color</key>
<dict>
<key>alpha</key>
<real>1</real>
<key>blue</key>
<real>0</real>
<key>green</key>
<real>0</real>
<key>red</key>
<real>0</real>
</dict>
<key>font</key>
<dict>
<key>fontName</key>
<string>Helvetica</string>
<key>fontSize</key>
<real>14</real>
</dict>
<key>imageInsets</key>
<dict>
<key>bottom</key>
<real>-6</real>
<key>left</key>
<real>0</real>
<key>right</key>
<real>0</real>
<key>top</key>
<real>6</real>
</dict>
<key>imageName</key>
<string>more_bigimage</string>
<key>title</key>
<string></string>
<key>titleOffset</key>
<dict>
<key>horizontal</key>
<real>0</real>
<key>vertical</key>
<real>0</real>
</dict>
</dict>
</dict>
<key>kSmallTitleAdaptiveState</key>
<dict>
<key>UIControlStateNormal</key>
<dict>
<key>backgroundColor</key>
<dict>
<key>alpha</key>
<real>0</real>
<key>blue</key>
<real>0</real>
<key>green</key>
<real>0</real>
<key>red</key>
<real>0</real>
</dict>
<key>color</key>
<dict>
<key>alpha</key>
<real>1</real>
<key>blue</key>
<real>1</real>
<key>green</key>
<real>1</real>
<key>red</key>
<real>1</real>
</dict>
<key>font</key>
<dict>
<key>fontName</key>
<string>Helvetica</string>
<key>fontSize</key>
<real>10</real>
</dict>
<key>imageInsets</key>
<dict>
<key>bottom</key>
<real>0</real>
<key>left</key>
<real>0</real>
<key>right</key>
<real>0</real>
<key>top</key>
<real>0</real>
</dict>
<key>imageName</key>
<string>more_smalltitle</string>
<key>title</key>
<string>more</string>
<key>titleOffset</key>
<dict>
<key>horizontal</key>
<real>0</real>
<key>vertical</key>
<real>0</real>
</dict>
</dict>
</dict>
</dict>
</array>
</plist>
@@ -0,0 +1,901 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>DefaultAdaptiveState</key>
<dict>
<key>UIControlState.Normal</key>
<dict>
<key>backgroundColorKey</key>
<dict>
<key>alphaColor</key>
<real>0</real>
<key>blueColor</key>
<real>0</real>
<key>greenColor</key>
<real>0</real>
<key>redColor</key>
<real>0</real>
</dict>
<key>backgroundImageNameKey</key>
<string></string>
<key>colorKey</key>
<dict>
<key>alphaColor</key>
<real>1</real>
<key>blueColor</key>
<real>1</real>
<key>greenColor</key>
<real>1</real>
<key>redColor</key>
<real>1</real>
</dict>
<key>fontKey</key>
<dict>
<key>fontNameKey</key>
<string>Helvetica</string>
<key>fontSizeKey</key>
<real>14</real>
</dict>
<key>imageInsetsKey</key>
<dict>
<key>bottomKey</key>
<real>0</real>
<key>leftKey</key>
<real>0</real>
<key>rightKey</key>
<real>0</real>
<key>topKey</key>
<real>0</real>
</dict>
<key>imageNameKey</key>
<string>watch</string>
<key>title</key>
<string>watch</string>
<key>titleOffsetKey</key>
<dict>
<key>xKey</key>
<real>0</real>
<key>yKey</key>
<real>0</real>
</dict>
</dict>
</dict>
<key>kImageAdaptiveState</key>
<dict>
<key>UIControlState.Normal</key>
<dict>
<key>backgroundColorKey</key>
<dict>
<key>alphaColor</key>
<real>0</real>
<key>blueColor</key>
<real>0</real>
<key>greenColor</key>
<real>0</real>
<key>redColor</key>
<real>0</real>
</dict>
<key>backgroundImageNameKey</key>
<string></string>
<key>colorKey</key>
<dict>
<key>alphaColor</key>
<real>1</real>
<key>blueColor</key>
<real>0</real>
<key>greenColor</key>
<real>0</real>
<key>redColor</key>
<real>0</real>
</dict>
<key>fontKey</key>
<dict>
<key>fontNameKey</key>
<string>Helvetica</string>
<key>fontSizeKey</key>
<real>14</real>
</dict>
<key>imageInsetsKey</key>
<dict>
<key>bottomKey</key>
<integer>-6</integer>
<key>leftKey</key>
<integer>0</integer>
<key>rightKey</key>
<integer>0</integer>
<key>topKey</key>
<integer>6</integer>
</dict>
<key>imageNameKey</key>
<string>watch_bigimage</string>
<key>title</key>
<string></string>
<key>titleOffsetKey</key>
<dict>
<key>xKey</key>
<real>0</real>
<key>yKey</key>
<real>0</real>
</dict>
</dict>
</dict>
<key>kSmallTitleAdaptiveState</key>
<dict>
<key>UIControlState.Normal</key>
<dict>
<key>backgroundColorKey</key>
<dict>
<key>alphaColor</key>
<real>0</real>
<key>blueColor</key>
<real>0</real>
<key>greenColor</key>
<real>0</real>
<key>redColor</key>
<real>0</real>
</dict>
<key>backgroundImageNameKey</key>
<string></string>
<key>colorKey</key>
<dict>
<key>alphaColor</key>
<real>1</real>
<key>blueColor</key>
<real>1</real>
<key>greenColor</key>
<real>1</real>
<key>redColor</key>
<real>1</real>
</dict>
<key>fontKey</key>
<dict>
<key>fontNameKey</key>
<string>Helvetica</string>
<key>fontSizeKey</key>
<real>10</real>
</dict>
<key>imageInsetsKey</key>
<dict>
<key>bottomKey</key>
<real>0</real>
<key>leftKey</key>
<real>0</real>
<key>rightKey</key>
<real>0</real>
<key>topKey</key>
<real>0</real>
</dict>
<key>imageNameKey</key>
<string>watch_smalltitle</string>
<key>title</key>
<string>watch</string>
<key>titleOffsetKey</key>
<dict>
<key>xKey</key>
<real>0</real>
<key>yKey</key>
<real>0</real>
</dict>
</dict>
</dict>
</dict>
<dict>
<key>DefaultAdaptiveState</key>
<dict>
<key>UIControlState.Normal</key>
<dict>
<key>backgroundColorKey</key>
<dict>
<key>alphaColor</key>
<real>0</real>
<key>blueColor</key>
<real>0</real>
<key>greenColor</key>
<real>0</real>
<key>redColor</key>
<real>0</real>
</dict>
<key>backgroundImageNameKey</key>
<string></string>
<key>colorKey</key>
<dict>
<key>alphaColor</key>
<real>1</real>
<key>blueColor</key>
<real>1</real>
<key>greenColor</key>
<real>1</real>
<key>redColor</key>
<real>1</real>
</dict>
<key>fontKey</key>
<dict>
<key>fontNameKey</key>
<string>Helvetica</string>
<key>fontSizeKey</key>
<real>14</real>
</dict>
<key>imageInsetsKey</key>
<dict>
<key>bottomKey</key>
<real>0</real>
<key>leftKey</key>
<real>0</real>
<key>rightKey</key>
<real>0</real>
<key>topKey</key>
<real>0</real>
</dict>
<key>imageNameKey</key>
<string>messages</string>
<key>title</key>
<string>message</string>
<key>titleOffsetKey</key>
<dict>
<key>xKey</key>
<real>0</real>
<key>yKey</key>
<real>0</real>
</dict>
</dict>
</dict>
<key>kImageAdaptiveState</key>
<dict>
<key>UIControlState.Normal</key>
<dict>
<key>backgroundColorKey</key>
<dict>
<key>alphaColor</key>
<real>0</real>
<key>blueColor</key>
<real>0</real>
<key>greenColor</key>
<real>0</real>
<key>redColor</key>
<real>0</real>
</dict>
<key>backgroundImageNameKey</key>
<string></string>
<key>colorKey</key>
<dict>
<key>alphaColor</key>
<real>1</real>
<key>blueColor</key>
<real>0</real>
<key>greenColor</key>
<real>0</real>
<key>redColor</key>
<real>0</real>
</dict>
<key>fontKey</key>
<dict>
<key>fontNameKey</key>
<string>Helvetica</string>
<key>fontSizeKey</key>
<real>14</real>
</dict>
<key>imageInsetsKey</key>
<dict>
<key>bottomKey</key>
<real>-6</real>
<key>leftKey</key>
<real>0</real>
<key>rightKey</key>
<integer>0</integer>
<key>topKey</key>
<real>6</real>
</dict>
<key>imageNameKey</key>
<string>messages_bigimage</string>
<key>title</key>
<string></string>
<key>titleOffsetKey</key>
<dict>
<key>xKey</key>
<real>0</real>
<key>yKey</key>
<real>0</real>
</dict>
</dict>
</dict>
<key>kSmallTitleAdaptiveState</key>
<dict>
<key>UIControlState.Normal</key>
<dict>
<key>backgroundColorKey</key>
<dict>
<key>alphaColor</key>
<real>0</real>
<key>blueColor</key>
<real>0</real>
<key>greenColor</key>
<real>0</real>
<key>redColor</key>
<real>0</real>
</dict>
<key>backgroundImageNameKey</key>
<string></string>
<key>colorKey</key>
<dict>
<key>alphaColor</key>
<real>1</real>
<key>blueColor</key>
<real>1</real>
<key>greenColor</key>
<real>1</real>
<key>redColor</key>
<real>1</real>
</dict>
<key>fontKey</key>
<dict>
<key>fontNameKey</key>
<string>Helvetica</string>
<key>fontSizeKey</key>
<real>10</real>
</dict>
<key>imageInsetsKey</key>
<dict>
<key>bottomKey</key>
<real>0</real>
<key>leftKey</key>
<real>0</real>
<key>rightKey</key>
<real>0</real>
<key>topKey</key>
<real>0</real>
</dict>
<key>imageNameKey</key>
<string>messages_smalltitle</string>
<key>title</key>
<string>message</string>
<key>titleOffsetKey</key>
<dict>
<key>xKey</key>
<real>0</real>
<key>yKey</key>
<real>0</real>
</dict>
</dict>
</dict>
</dict>
<dict>
<key>DefaultAdaptiveState</key>
<dict>
<key>UIControlState.Normal</key>
<dict>
<key>backgroundColorKey</key>
<dict>
<key>alphaColor</key>
<real>0</real>
<key>blueColor</key>
<real>0</real>
<key>greenColor</key>
<real>0</real>
<key>redColor</key>
<real>0</real>
</dict>
<key>backgroundImageNameKey</key>
<string></string>
<key>colorKey</key>
<dict>
<key>alphaColor</key>
<real>1</real>
<key>blueColor</key>
<real>1</real>
<key>greenColor</key>
<real>1</real>
<key>redColor</key>
<real>1</real>
</dict>
<key>fontKey</key>
<dict>
<key>fontNameKey</key>
<string>Helvetica</string>
<key>fontSizeKey</key>
<real>14</real>
</dict>
<key>imageInsetsKey</key>
<dict>
<key>bottomKey</key>
<real>0</real>
<key>leftKey</key>
<real>0</real>
<key>rightKey</key>
<real>0</real>
<key>topKey</key>
<real>0</real>
</dict>
<key>imageNameKey</key>
<string>man</string>
<key>title</key>
<string>user</string>
<key>titleOffsetKey</key>
<dict>
<key>xKey</key>
<real>0</real>
<key>yKey</key>
<real>0</real>
</dict>
</dict>
</dict>
<key>kImageAdaptiveState</key>
<dict>
<key>UIControlState.Normal</key>
<dict>
<key>backgroundColorKey</key>
<dict>
<key>alphaColor</key>
<real>0</real>
<key>blueColor</key>
<real>0</real>
<key>greenColor</key>
<real>0</real>
<key>redColor</key>
<real>0</real>
</dict>
<key>backgroundImageNameKey</key>
<string></string>
<key>colorKey</key>
<dict>
<key>alphaColor</key>
<real>1</real>
<key>blueColor</key>
<real>0</real>
<key>greenColor</key>
<real>0</real>
<key>redColor</key>
<real>0</real>
</dict>
<key>fontKey</key>
<dict>
<key>fontNameKey</key>
<string>Helvetica</string>
<key>fontSizeKey</key>
<real>14</real>
</dict>
<key>imageInsetsKey</key>
<dict>
<key>bottomKey</key>
<real>-6</real>
<key>leftKey</key>
<real>0</real>
<key>rightKey</key>
<integer>0</integer>
<key>topKey</key>
<real>6</real>
</dict>
<key>imageNameKey</key>
<string>man_bigimage</string>
<key>title</key>
<string></string>
<key>titleOffsetKey</key>
<dict>
<key>xKey</key>
<real>0</real>
<key>yKey</key>
<real>0</real>
</dict>
</dict>
</dict>
<key>kSmallTitleAdaptiveState</key>
<dict>
<key>UIControlState.Normal</key>
<dict>
<key>backgroundColorKey</key>
<dict>
<key>alphaColor</key>
<real>0</real>
<key>blueColor</key>
<real>0</real>
<key>greenColor</key>
<real>0</real>
<key>redColor</key>
<real>0</real>
</dict>
<key>backgroundImageNameKey</key>
<string></string>
<key>colorKey</key>
<dict>
<key>alphaColor</key>
<real>1</real>
<key>blueColor</key>
<real>1</real>
<key>greenColor</key>
<real>1</real>
<key>redColor</key>
<real>1</real>
</dict>
<key>fontKey</key>
<dict>
<key>fontNameKey</key>
<string>Helvetica</string>
<key>fontSizeKey</key>
<real>10</real>
</dict>
<key>imageInsetsKey</key>
<dict>
<key>bottomKey</key>
<real>0</real>
<key>leftKey</key>
<real>0</real>
<key>rightKey</key>
<real>0</real>
<key>topKey</key>
<real>0</real>
</dict>
<key>imageNameKey</key>
<string>man_smalltitle</string>
<key>title</key>
<string>user</string>
<key>titleOffsetKey</key>
<dict>
<key>xKey</key>
<real>0</real>
<key>yKey</key>
<real>0</real>
</dict>
</dict>
</dict>
</dict>
<dict>
<key>DefaultAdaptiveState</key>
<dict>
<key>UIControlState.Normal</key>
<dict>
<key>backgroundColorKey</key>
<dict>
<key>alphaColor</key>
<real>0</real>
<key>blueColor</key>
<real>0</real>
<key>greenColor</key>
<real>0</real>
<key>redColor</key>
<real>0</real>
</dict>
<key>backgroundImageNameKey</key>
<string></string>
<key>colorKey</key>
<dict>
<key>alphaColor</key>
<real>1</real>
<key>blueColor</key>
<real>1</real>
<key>greenColor</key>
<real>1</real>
<key>redColor</key>
<real>1</real>
</dict>
<key>fontKey</key>
<dict>
<key>fontNameKey</key>
<string>Helvetica</string>
<key>fontSizeKey</key>
<real>14</real>
</dict>
<key>imageInsetsKey</key>
<dict>
<key>bottomKey</key>
<real>0</real>
<key>leftKey</key>
<real>0</real>
<key>rightKey</key>
<real>0</real>
<key>topKey</key>
<real>0</real>
</dict>
<key>imageNameKey</key>
<string>menu</string>
<key>title</key>
<string>dial</string>
<key>titleOffsetKey</key>
<dict>
<key>xKey</key>
<real>0</real>
<key>yKey</key>
<real>0</real>
</dict>
</dict>
</dict>
<key>kImageAdaptiveState</key>
<dict>
<key>UIControlState.Normal</key>
<dict>
<key>backgroundColorKey</key>
<dict>
<key>alphaColor</key>
<real>0</real>
<key>blueColor</key>
<real>0</real>
<key>greenColor</key>
<real>0</real>
<key>redColor</key>
<real>0</real>
</dict>
<key>backgroundImageNameKey</key>
<string></string>
<key>colorKey</key>
<dict>
<key>alphaColor</key>
<real>1</real>
<key>blueColor</key>
<real>0</real>
<key>greenColor</key>
<real>0</real>
<key>redColor</key>
<real>0</real>
</dict>
<key>fontKey</key>
<dict>
<key>fontNameKey</key>
<string>Helvetica</string>
<key>fontSizeKey</key>
<real>14</real>
</dict>
<key>imageInsetsKey</key>
<dict>
<key>bottomKey</key>
<real>-6</real>
<key>leftKey</key>
<real>0</real>
<key>rightKey</key>
<integer>0</integer>
<key>topKey</key>
<integer>6</integer>
</dict>
<key>imageNameKey</key>
<string>menu_bigimage</string>
<key>title</key>
<string></string>
<key>titleOffsetKey</key>
<dict>
<key>xKey</key>
<real>0</real>
<key>yKey</key>
<real>0</real>
</dict>
</dict>
</dict>
<key>kSmallTitleAdaptiveState</key>
<dict>
<key>UIControlState.Normal</key>
<dict>
<key>backgroundColorKey</key>
<dict>
<key>alphaColor</key>
<real>0</real>
<key>blueColor</key>
<real>0</real>
<key>greenColor</key>
<real>0</real>
<key>redColor</key>
<real>0</real>
</dict>
<key>backgroundImageNameKey</key>
<string></string>
<key>colorKey</key>
<dict>
<key>alphaColor</key>
<real>1</real>
<key>blueColor</key>
<real>1</real>
<key>greenColor</key>
<real>1</real>
<key>redColor</key>
<real>1</real>
</dict>
<key>fontKey</key>
<dict>
<key>fontNameKey</key>
<string>Helvetica</string>
<key>fontSizeKey</key>
<real>10</real>
</dict>
<key>imageInsetsKey</key>
<dict>
<key>bottomKey</key>
<real>0</real>
<key>leftKey</key>
<real>0</real>
<key>rightKey</key>
<real>0</real>
<key>topKey</key>
<real>0</real>
</dict>
<key>imageNameKey</key>
<string>menu_smalltitle</string>
<key>title</key>
<string>dial</string>
<key>titleOffsetKey</key>
<dict>
<key>xKey</key>
<real>0</real>
<key>yKey</key>
<real>0</real>
</dict>
</dict>
</dict>
</dict>
<dict>
<key>DefaultAdaptiveState</key>
<dict>
<key>UIControlState.Normal</key>
<dict>
<key>backgroundColorKey</key>
<dict>
<key>alphaColor</key>
<real>0</real>
<key>blueColor</key>
<real>0</real>
<key>greenColor</key>
<real>0</real>
<key>redColor</key>
<real>0</real>
</dict>
<key>backgroundImageNameKey</key>
<string></string>
<key>colorKey</key>
<dict>
<key>alphaColor</key>
<real>1</real>
<key>blueColor</key>
<real>1</real>
<key>greenColor</key>
<real>1</real>
<key>redColor</key>
<real>1</real>
</dict>
<key>fontKey</key>
<dict>
<key>fontNameKey</key>
<string>Helvetica</string>
<key>fontSizeKey</key>
<real>14</real>
</dict>
<key>imageInsetsKey</key>
<dict>
<key>bottomKey</key>
<real>0</real>
<key>leftKey</key>
<real>0</real>
<key>rightKey</key>
<real>0</real>
<key>topKey</key>
<real>0</real>
</dict>
<key>imageNameKey</key>
<string>more</string>
<key>title</key>
<string>more</string>
<key>titleOffsetKey</key>
<dict>
<key>xKey</key>
<real>0</real>
<key>yKey</key>
<real>0</real>
</dict>
</dict>
</dict>
<key>kImageAdaptiveState</key>
<dict>
<key>UIControlState.Normal</key>
<dict>
<key>backgroundColorKey</key>
<dict>
<key>alphaColor</key>
<real>0</real>
<key>blueColor</key>
<real>0</real>
<key>greenColor</key>
<real>0</real>
<key>redColor</key>
<real>0</real>
</dict>
<key>backgroundImageNameKey</key>
<string></string>
<key>colorKey</key>
<dict>
<key>alphaColor</key>
<real>1</real>
<key>blueColor</key>
<real>0</real>
<key>greenColor</key>
<real>0</real>
<key>redColor</key>
<real>0</real>
</dict>
<key>fontKey</key>
<dict>
<key>fontNameKey</key>
<string>Helvetica</string>
<key>fontSizeKey</key>
<real>14</real>
</dict>
<key>imageInsetsKey</key>
<dict>
<key>bottomKey</key>
<real>-6</real>
<key>leftKey</key>
<real>0</real>
<key>rightKey</key>
<integer>0</integer>
<key>topKey</key>
<real>6</real>
</dict>
<key>imageNameKey</key>
<string>more_bigimage</string>
<key>title</key>
<string></string>
<key>titleOffsetKey</key>
<dict>
<key>xKey</key>
<real>0</real>
<key>yKey</key>
<real>0</real>
</dict>
</dict>
</dict>
<key>kSmallTitleAdaptiveState</key>
<dict>
<key>UIControlState.Normal</key>
<dict>
<key>backgroundColorKey</key>
<dict>
<key>alphaColor</key>
<real>0</real>
<key>blueColor</key>
<real>0</real>
<key>greenColor</key>
<real>0</real>
<key>redColor</key>
<real>0</real>
</dict>
<key>backgroundImageNameKey</key>
<string></string>
<key>colorKey</key>
<dict>
<key>alphaColor</key>
<real>1</real>
<key>blueColor</key>
<real>1</real>
<key>greenColor</key>
<real>1</real>
<key>redColor</key>
<real>1</real>
</dict>
<key>fontKey</key>
<dict>
<key>fontNameKey</key>
<string>Helvetica</string>
<key>fontSizeKey</key>
<real>10</real>
</dict>
<key>imageInsetsKey</key>
<dict>
<key>bottomKey</key>
<real>0</real>
<key>leftKey</key>
<real>0</real>
<key>rightKey</key>
<real>0</real>
<key>topKey</key>
<real>0</real>
</dict>
<key>imageNameKey</key>
<string>more_smalltitle</string>
<key>title</key>
<string>more</string>
<key>titleOffsetKey</key>
<dict>
<key>xKey</key>
<real>0</real>
<key>yKey</key>
<real>0</real>
</dict>
</dict>
</dict>
</dict>
</array>
</plist>
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>ramotion.$(PRODUCT_NAME:rfc1034identifier)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>
@@ -0,0 +1,36 @@
//
// adaptive_tab_barTests.swift
// adaptive-tab-barTests
//
// Created by Arcilite on 15.09.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
import XCTest
class adaptive_tab_barTests: XCTestCase {
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
func testExample() {
// This is an example of a functional test case.
XCTAssert(true, "Pass")
}
func testPerformanceExample() {
// This is an example of a performance test case.
self.measureBlock() {
// Put the code you want to measure the time of here.
}
}
}
@@ -0,0 +1,505 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
6A156E401A091169002A69AD /* appearances.plist in Resources */ = {isa = PBXBuildFile; fileRef = 6A156E3F1A091169002A69AD /* appearances.plist */; };
6A3ED0C819ED0236006F06DD /* DateExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A87F54B19C8532500E8F31B /* DateExtension.swift */; };
6A55590219E2C20900ED3B5C /* AdaptiveController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A55590119E2C20900ED3B5C /* AdaptiveController.framework */; };
6A55590819E2CF7200ED3B5C /* MenuViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A55590319E2CF7200ED3B5C /* MenuViewController.swift */; };
6A55590919E2CF7200ED3B5C /* MessageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A55590419E2CF7200ED3B5C /* MessageViewController.swift */; };
6A55590A19E2CF7200ED3B5C /* MoreViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A55590519E2CF7200ED3B5C /* MoreViewController.swift */; };
6A55590B19E2CF7200ED3B5C /* UserViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A55590619E2CF7200ED3B5C /* UserViewController.swift */; };
6A55590C19E2CF7200ED3B5C /* WatchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A55590719E2CF7200ED3B5C /* WatchViewController.swift */; };
6A55590F19E2CF7C00ED3B5C /* AdaptiveTabBarItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A55590D19E2CF7C00ED3B5C /* AdaptiveTabBarItem.swift */; };
6A55591019E2CF7C00ED3B5C /* TabBarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A55590E19E2CF7C00ED3B5C /* TabBarViewController.swift */; };
6A87F54D19C8532500E8F31B /* DateExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A87F54B19C8532500E8F31B /* DateExtension.swift */; };
6ACC309E19C741E7006B6DF6 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6ACC309D19C741E7006B6DF6 /* QuartzCore.framework */; };
6AD5A2F919C6C95E00606826 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AD5A2F819C6C95E00606826 /* AppDelegate.swift */; };
6AD5A30019C6C95E00606826 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6AD5A2FE19C6C95E00606826 /* Main.storyboard */; };
6AD5A30219C6C95E00606826 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6AD5A30119C6C95E00606826 /* Images.xcassets */; };
6AD5A30519C6C95E00606826 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6AD5A30319C6C95E00606826 /* LaunchScreen.xib */; };
6AD5A31119C6C95E00606826 /* adaptive_tab_barTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AD5A31019C6C95E00606826 /* adaptive_tab_barTests.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
6AD5A30B19C6C95E00606826 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 6AD5A2EB19C6C95E00606826 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 6AD5A2F219C6C95E00606826;
remoteInfo = "adaptive-tab-bar";
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
6A9D84CC19CAB231006EA201 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
6A156E3F1A091169002A69AD /* appearances.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = appearances.plist; sourceTree = "<group>"; };
6A55590119E2C20900ED3B5C /* AdaptiveController.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdaptiveController.framework; path = "../../AdaptiveController/build/Debug-iphoneos/AdaptiveController.framework"; sourceTree = "<group>"; };
6A55590319E2CF7200ED3B5C /* MenuViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MenuViewController.swift; path = UIControllers/MenuViewController.swift; sourceTree = "<group>"; };
6A55590419E2CF7200ED3B5C /* MessageViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MessageViewController.swift; path = UIControllers/MessageViewController.swift; sourceTree = "<group>"; };
6A55590519E2CF7200ED3B5C /* MoreViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MoreViewController.swift; path = UIControllers/MoreViewController.swift; sourceTree = "<group>"; };
6A55590619E2CF7200ED3B5C /* UserViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = UserViewController.swift; path = UIControllers/UserViewController.swift; sourceTree = "<group>"; };
6A55590719E2CF7200ED3B5C /* WatchViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = WatchViewController.swift; path = UIControllers/WatchViewController.swift; sourceTree = "<group>"; };
6A55590D19E2CF7C00ED3B5C /* AdaptiveTabBarItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AdaptiveTabBarItem.swift; path = CustomTabBar/AdaptiveTabBarItem.swift; sourceTree = "<group>"; };
6A55590E19E2CF7C00ED3B5C /* TabBarViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = TabBarViewController.swift; path = CustomTabBar/TabBarViewController.swift; sourceTree = "<group>"; };
6A87F4B719C8322D00E8F31B /* adaptive-tab-bar-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "adaptive-tab-bar-Bridging-Header.h"; sourceTree = SOURCE_ROOT; };
6A87F54B19C8532500E8F31B /* DateExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DateExtension.swift; sourceTree = "<group>"; };
6ACC309D19C741E7006B6DF6 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
6AD5A2F319C6C95E00606826 /* example-date-adaptive-tab-bar.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "example-date-adaptive-tab-bar.app"; sourceTree = BUILT_PRODUCTS_DIR; };
6AD5A2F719C6C95E00606826 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
6AD5A2F819C6C95E00606826 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
6AD5A2FF19C6C95E00606826 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
6AD5A30119C6C95E00606826 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
6AD5A30419C6C95E00606826 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = "<group>"; };
6AD5A30A19C6C95E00606826 /* example-date-adaptive-tab-barTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "example-date-adaptive-tab-barTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
6AD5A30F19C6C95E00606826 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
6AD5A31019C6C95E00606826 /* adaptive_tab_barTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = adaptive_tab_barTests.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
6AD5A2F019C6C95E00606826 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
6A55590219E2C20900ED3B5C /* AdaptiveController.framework in Frameworks */,
6ACC309E19C741E7006B6DF6 /* QuartzCore.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
6AD5A30719C6C95E00606826 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
6AA8346119CB3E9E0026038C /* UIControllers */ = {
isa = PBXGroup;
children = (
6A55590319E2CF7200ED3B5C /* MenuViewController.swift */,
6A55590419E2CF7200ED3B5C /* MessageViewController.swift */,
6A55590519E2CF7200ED3B5C /* MoreViewController.swift */,
6A55590619E2CF7200ED3B5C /* UserViewController.swift */,
6A55590719E2CF7200ED3B5C /* WatchViewController.swift */,
);
name = UIControllers;
sourceTree = "<group>";
};
6AD5A2EA19C6C95E00606826 = {
isa = PBXGroup;
children = (
6A55590119E2C20900ED3B5C /* AdaptiveController.framework */,
6ACC309D19C741E7006B6DF6 /* QuartzCore.framework */,
6AD5A2F519C6C95E00606826 /* adaptive-tab-bar */,
6AD5A30D19C6C95E00606826 /* adaptive-tab-barTests */,
6AD5A2F419C6C95E00606826 /* Products */,
);
sourceTree = "<group>";
};
6AD5A2F419C6C95E00606826 /* Products */ = {
isa = PBXGroup;
children = (
6AD5A2F319C6C95E00606826 /* example-date-adaptive-tab-bar.app */,
6AD5A30A19C6C95E00606826 /* example-date-adaptive-tab-barTests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
6AD5A2F519C6C95E00606826 /* adaptive-tab-bar */ = {
isa = PBXGroup;
children = (
6AFBC6C619D19B2C00D42578 /* CustomTabBar */,
6AA8346119CB3E9E0026038C /* UIControllers */,
6A87F54B19C8532500E8F31B /* DateExtension.swift */,
6AD5A2F819C6C95E00606826 /* AppDelegate.swift */,
6AD5A2FE19C6C95E00606826 /* Main.storyboard */,
6AD5A30119C6C95E00606826 /* Images.xcassets */,
6AD5A30319C6C95E00606826 /* LaunchScreen.xib */,
6A87F4B719C8322D00E8F31B /* adaptive-tab-bar-Bridging-Header.h */,
6AD5A2F619C6C95E00606826 /* Supporting Files */,
);
path = "adaptive-tab-bar";
sourceTree = "<group>";
};
6AD5A2F619C6C95E00606826 /* Supporting Files */ = {
isa = PBXGroup;
children = (
6A156E3F1A091169002A69AD /* appearances.plist */,
6AD5A2F719C6C95E00606826 /* Info.plist */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
6AD5A30D19C6C95E00606826 /* adaptive-tab-barTests */ = {
isa = PBXGroup;
children = (
6AD5A31019C6C95E00606826 /* adaptive_tab_barTests.swift */,
6AD5A30E19C6C95E00606826 /* Supporting Files */,
);
path = "adaptive-tab-barTests";
sourceTree = "<group>";
};
6AD5A30E19C6C95E00606826 /* Supporting Files */ = {
isa = PBXGroup;
children = (
6AD5A30F19C6C95E00606826 /* Info.plist */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
6AFBC6C619D19B2C00D42578 /* CustomTabBar */ = {
isa = PBXGroup;
children = (
6A55590D19E2CF7C00ED3B5C /* AdaptiveTabBarItem.swift */,
6A55590E19E2CF7C00ED3B5C /* TabBarViewController.swift */,
);
name = CustomTabBar;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
6AD5A2F219C6C95E00606826 /* example-date-adaptive-tab-bar */ = {
isa = PBXNativeTarget;
buildConfigurationList = 6AD5A31419C6C95E00606826 /* Build configuration list for PBXNativeTarget "example-date-adaptive-tab-bar" */;
buildPhases = (
6AD5A2EF19C6C95E00606826 /* Sources */,
6AD5A2F019C6C95E00606826 /* Frameworks */,
6AD5A2F119C6C95E00606826 /* Resources */,
6A9D84CC19CAB231006EA201 /* Embed Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = "example-date-adaptive-tab-bar";
productName = "adaptive-tab-bar";
productReference = 6AD5A2F319C6C95E00606826 /* example-date-adaptive-tab-bar.app */;
productType = "com.apple.product-type.application";
};
6AD5A30919C6C95E00606826 /* example-date-adaptive-tab-barTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 6AD5A31719C6C95E00606826 /* Build configuration list for PBXNativeTarget "example-date-adaptive-tab-barTests" */;
buildPhases = (
6AD5A30619C6C95E00606826 /* Sources */,
6AD5A30719C6C95E00606826 /* Frameworks */,
6AD5A30819C6C95E00606826 /* Resources */,
);
buildRules = (
);
dependencies = (
6AD5A30C19C6C95E00606826 /* PBXTargetDependency */,
);
name = "example-date-adaptive-tab-barTests";
productName = "adaptive-tab-barTests";
productReference = 6AD5A30A19C6C95E00606826 /* example-date-adaptive-tab-barTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
6AD5A2EB19C6C95E00606826 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0600;
ORGANIZATIONNAME = Ramotion;
TargetAttributes = {
6AD5A2F219C6C95E00606826 = {
CreatedOnToolsVersion = 6.1;
};
6AD5A30919C6C95E00606826 = {
CreatedOnToolsVersion = 6.1;
TestTargetID = 6AD5A2F219C6C95E00606826;
};
};
};
buildConfigurationList = 6AD5A2EE19C6C95E00606826 /* Build configuration list for PBXProject "example-date-adaptive-tab-bar" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 6AD5A2EA19C6C95E00606826;
productRefGroup = 6AD5A2F419C6C95E00606826 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
6AD5A2F219C6C95E00606826 /* example-date-adaptive-tab-bar */,
6AD5A30919C6C95E00606826 /* example-date-adaptive-tab-barTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
6AD5A2F119C6C95E00606826 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
6AD5A30019C6C95E00606826 /* Main.storyboard in Resources */,
6AD5A30519C6C95E00606826 /* LaunchScreen.xib in Resources */,
6A156E401A091169002A69AD /* appearances.plist in Resources */,
6AD5A30219C6C95E00606826 /* Images.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
6AD5A30819C6C95E00606826 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
6AD5A2EF19C6C95E00606826 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
6A55590A19E2CF7200ED3B5C /* MoreViewController.swift in Sources */,
6A55590B19E2CF7200ED3B5C /* UserViewController.swift in Sources */,
6A87F54D19C8532500E8F31B /* DateExtension.swift in Sources */,
6A55590819E2CF7200ED3B5C /* MenuViewController.swift in Sources */,
6A55591019E2CF7C00ED3B5C /* TabBarViewController.swift in Sources */,
6A55590F19E2CF7C00ED3B5C /* AdaptiveTabBarItem.swift in Sources */,
6A55590919E2CF7200ED3B5C /* MessageViewController.swift in Sources */,
6AD5A2F919C6C95E00606826 /* AppDelegate.swift in Sources */,
6A55590C19E2CF7200ED3B5C /* WatchViewController.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
6AD5A30619C6C95E00606826 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
6AD5A31119C6C95E00606826 /* adaptive_tab_barTests.swift in Sources */,
6A3ED0C819ED0236006F06DD /* DateExtension.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
6AD5A30C19C6C95E00606826 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 6AD5A2F219C6C95E00606826 /* example-date-adaptive-tab-bar */;
targetProxy = 6AD5A30B19C6C95E00606826 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
6AD5A2FE19C6C95E00606826 /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
6AD5A2FF19C6C95E00606826 /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
6AD5A30319C6C95E00606826 /* LaunchScreen.xib */ = {
isa = PBXVariantGroup;
children = (
6AD5A30419C6C95E00606826 /* Base */,
);
name = LaunchScreen.xib;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
6AD5A31219C6C95E00606826 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
name = Debug;
};
6AD5A31319C6C95E00606826 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = YES;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES;
};
name = Release;
};
6AD5A31519C6C95E00606826 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
DEFINES_MODULE = YES;
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;
INFOPLIST_FILE = "adaptive-tab-bar/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_NAME = "example-date-adaptive-tab-bar";
SWIFT_OBJC_BRIDGING_HEADER = "adaptive-tab-bar-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
name = Debug;
};
6AD5A31619C6C95E00606826 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
DEFINES_MODULE = YES;
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;
INFOPLIST_FILE = "adaptive-tab-bar/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_NAME = "example-date-adaptive-tab-bar";
SWIFT_OBJC_BRIDGING_HEADER = "adaptive-tab-bar-Bridging-Header.h";
};
name = Release;
};
6AD5A31819C6C95E00606826 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
);
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
INFOPLIST_FILE = "adaptive-tab-barTests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_NAME = "example-date-adaptive-tab-barTests";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/adaptive-tab-bar.app/adaptive-tab-bar";
};
name = Debug;
};
6AD5A31919C6C95E00606826 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
);
INFOPLIST_FILE = "adaptive-tab-barTests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_NAME = "example-date-adaptive-tab-barTests";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/adaptive-tab-bar.app/adaptive-tab-bar";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
6AD5A2EE19C6C95E00606826 /* Build configuration list for PBXProject "example-date-adaptive-tab-bar" */ = {
isa = XCConfigurationList;
buildConfigurations = (
6AD5A31219C6C95E00606826 /* Debug */,
6AD5A31319C6C95E00606826 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
6AD5A31419C6C95E00606826 /* Build configuration list for PBXNativeTarget "example-date-adaptive-tab-bar" */ = {
isa = XCConfigurationList;
buildConfigurations = (
6AD5A31519C6C95E00606826 /* Debug */,
6AD5A31619C6C95E00606826 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
6AD5A31719C6C95E00606826 /* Build configuration list for PBXNativeTarget "example-date-adaptive-tab-barTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
6AD5A31819C6C95E00606826 /* Debug */,
6AD5A31919C6C95E00606826 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 6AD5A2EB19C6C95E00606826 /* Project object */;
}
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDESourceControlProjectFavoriteDictionaryKey</key>
<false/>
<key>IDESourceControlProjectIdentifier</key>
<string>D92F5CD9-52F6-4C6F-BE04-65069C513684</string>
<key>IDESourceControlProjectName</key>
<string>adaptive-tab-bar</string>
<key>IDESourceControlProjectOriginsDictionary</key>
<dict>
<key>552AF48197B9D7FDBD86FA325146F289549818B8</key>
<string>https://github.com/Ramotion/adaptive-tab-bar.git</string>
</dict>
<key>IDESourceControlProjectPath</key>
<string>adaptive-tab-bar/adaptive-tab-bar.xcodeproj</string>
<key>IDESourceControlProjectRelativeInstallPathDictionary</key>
<dict>
<key>552AF48197B9D7FDBD86FA325146F289549818B8</key>
<string>../../..</string>
</dict>
<key>IDESourceControlProjectURL</key>
<string>https://github.com/Ramotion/adaptive-tab-bar.git</string>
<key>IDESourceControlProjectVersion</key>
<integer>111</integer>
<key>IDESourceControlProjectWCCIdentifier</key>
<string>552AF48197B9D7FDBD86FA325146F289549818B8</string>
<key>IDESourceControlProjectWCConfigurations</key>
<array>
<dict>
<key>IDESourceControlRepositoryExtensionIdentifierKey</key>
<string>public.vcs.git</string>
<key>IDESourceControlWCCIdentifierKey</key>
<string>552AF48197B9D7FDBD86FA325146F289549818B8</string>
<key>IDESourceControlWCCName</key>
<string>adaptive-tab-bar</string>
</dict>
</array>
</dict>
</plist>
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDESourceControlProjectFavoriteDictionaryKey</key>
<false/>
<key>IDESourceControlProjectIdentifier</key>
<string>3FFC2A7F-DEB0-4FFA-A058-503F8A8E84CC</string>
<key>IDESourceControlProjectName</key>
<string>example-date-adaptive-tab-bar</string>
<key>IDESourceControlProjectOriginsDictionary</key>
<dict>
<key>552AF48197B9D7FDBD86FA325146F289549818B8</key>
<string>https://github.com/Ramotion/adaptive-tab-bar.git</string>
</dict>
<key>IDESourceControlProjectPath</key>
<string>adaptive-tab-bar/Samples/adaptive-dates-tabbar/example-date-adaptive-tab-bar.xcodeproj</string>
<key>IDESourceControlProjectRelativeInstallPathDictionary</key>
<dict>
<key>552AF48197B9D7FDBD86FA325146F289549818B8</key>
<string>../../../../..</string>
</dict>
<key>IDESourceControlProjectURL</key>
<string>https://github.com/Ramotion/adaptive-tab-bar.git</string>
<key>IDESourceControlProjectVersion</key>
<integer>111</integer>
<key>IDESourceControlProjectWCCIdentifier</key>
<string>552AF48197B9D7FDBD86FA325146F289549818B8</string>
<key>IDESourceControlProjectWCConfigurations</key>
<array>
<dict>
<key>IDESourceControlRepositoryExtensionIdentifierKey</key>
<string>public.vcs.git</string>
<key>IDESourceControlWCCIdentifierKey</key>
<string>552AF48197B9D7FDBD86FA325146F289549818B8</string>
<key>IDESourceControlWCCName</key>
<string>adaptive-tab-bar</string>
</dict>
</array>
</dict>
</plist>
@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6AD5A2F219C6C95E00606826"
BuildableName = "example-date-adaptive-tab-bar.app"
BlueprintName = "example-date-adaptive-tab-bar"
ReferencedContainer = "container:example-date-adaptive-tab-bar.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6AD5A2F219C6C95E00606826"
BuildableName = "example-date-adaptive-tab-bar.app"
BlueprintName = "example-date-adaptive-tab-bar"
ReferencedContainer = "container:example-date-adaptive-tab-bar.xcodeproj">
</BuildableReference>
</MacroExpansion>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6AD5A2F219C6C95E00606826"
BuildableName = "example-date-adaptive-tab-bar.app"
BlueprintName = "example-date-adaptive-tab-bar"
ReferencedContainer = "container:example-date-adaptive-tab-bar.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6AD5A2F219C6C95E00606826"
BuildableName = "example-date-adaptive-tab-bar.app"
BlueprintName = "example-date-adaptive-tab-bar"
ReferencedContainer = "container:example-date-adaptive-tab-bar.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
type = "1"
version = "2.0">
</Bucket>
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>example-date-adaptive-tab-bar.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>3</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>6A9D84AE19CAB231006EA201</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>6A9D84B819CAB231006EA201</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>6AD5A2F219C6C95E00606826</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>6AD5A30919C6C95E00606826</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>
@@ -0,0 +1,163 @@
//
// AppDelegate.swift
// adaptive-tab-bar
//
// Created by Arcilite on 15.09.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
import CoreGraphics
import QuartzCore
import AdaptiveController
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
UITabBar.appearance().selectedImageTintColor = tabColor
UITabBar.appearance().barTintColor = UIColor.clearColor()
UITabBar.appearance().shadowImage = UIImage()
UITabBar.appearance().selectionIndicatorImage = UIImage(named: "backgroud_tab")
UITabBar.appearance().itemPositioning = UITabBarItemPositioning.Fill
UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.whiteColor()],forState: UIControlState.Normal)
UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: tabColor],forState: UIControlState.Selected)
var tabBarController:UITabBarController = self.window?.rootViewController as UITabBarController
var tabBar:UITabBar = tabBarController.tabBar
tabBar.barTintColor = tabColor
tabBar.clipsToBounds = true
var curentCountLaunches = 6
var adaptiveState = AdaptiveLaunchesState(curentCountLaunches:curentCountLaunches,countLaunchesToSmallTextState:countDaysForSmaltextState,countLaunchesToImageState:countDaysForImageModeState)
var buttonsAppearances = buttonsAppearancesGenerate()
var arrayButtons = tabBar.items as [AdaptiveTabBarItem]
AdaptiveButtonsStateManager.setupButtonsAppearanceFromState(adaptiveState,buttonsAray:arrayButtons ,buttonsAppearances: buttonsAppearances)
return true
}
func buttonsAppearancesGenerate() -> [AdaptiveButtonAppearance]{
var settingsManager = AppearenceSettingManager()
//
settingsManager.defaultStyleSettingsForNormalState(AdaptiveStateEnum.DefaultAdaptiveState,titleOffset:defaultOffset, imageInsets:defaultInsets, titleColor:UIColor.whiteColor(), font:defaultFont!, backgroundColor:UIColor.clearColor())
settingsManager.defaultStyleSettingsForNormalState(AdaptiveStateEnum.SmallTitleAdaptiveState,titleOffset:defaultOffset, imageInsets:defaultSmallTitleModeImageInsets, titleColor:UIColor.whiteColor(), font:defaultSmallTitleModeFont!, backgroundColor:UIColor.clearColor())
settingsManager.defaultStyleSettingsForNormalState(AdaptiveStateEnum.ImageAdaptiveState,titleOffset:defaultOffset, imageInsets:defaultImageModeInsets, titleColor:UIColor.whiteColor(), font:defaultFont!, backgroundColor:UIColor.clearColor())
var watchControlDefaultStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.DefaultAdaptiveState, title:"watch", imageName:"watch")
var watchControlSmallTitleStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.SmallTitleAdaptiveState, title:"watch", imageName:"watch_smalltitle")
var watchControlImageStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.ImageAdaptiveState, title:"", imageName:"watch_bigimage")
let watchAppearanceStates = [AdaptiveStateEnum.DefaultAdaptiveState:watchControlDefaultStateValue,
AdaptiveStateEnum.SmallTitleAdaptiveState:watchControlSmallTitleStateValue,
AdaptiveStateEnum.ImageAdaptiveState:watchControlImageStateValue]
var watchAppearance = AdaptiveButtonAppearance(states:watchAppearanceStates)
var userСontrolDefaultStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.DefaultAdaptiveState, title:"user", imageName:"man")
var userControlSmallTitleStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.SmallTitleAdaptiveState, title:"user", imageName:"man_smalltitle")
var userControlImageStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.ImageAdaptiveState, title:"", imageName:"man_bigimage")
let userappearanceStates = [AdaptiveStateEnum.DefaultAdaptiveState:watchControlDefaultStateValue,
AdaptiveStateEnum.SmallTitleAdaptiveState:watchControlSmallTitleStateValue,
AdaptiveStateEnum.ImageAdaptiveState:watchControlImageStateValue]
let userAppearanceStates = [AdaptiveStateEnum.DefaultAdaptiveState:userСontrolDefaultStateValue,
AdaptiveStateEnum.SmallTitleAdaptiveState:userControlSmallTitleStateValue,
AdaptiveStateEnum.ImageAdaptiveState:userControlImageStateValue]
var userAperance = AdaptiveButtonAppearance(states:userAppearanceStates)
var messageСontrolDefaultStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.DefaultAdaptiveState, title:"messages", imageName:"messages")
var messageControlSmallTitleStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.SmallTitleAdaptiveState, title:"messages", imageName:"messages_smalltitle")
var messageControlImageStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.ImageAdaptiveState, title:"", imageName:"messages_bigimage")
let messageAppearanceStates = [AdaptiveStateEnum.DefaultAdaptiveState:messageСontrolDefaultStateValue,
AdaptiveStateEnum.SmallTitleAdaptiveState:messageControlSmallTitleStateValue,
AdaptiveStateEnum.ImageAdaptiveState:messageControlImageStateValue]
var messageAperance = AdaptiveButtonAppearance(states:messageAppearanceStates)
var menuСontrolDefaultStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.DefaultAdaptiveState, title:"dial", imageName:"menu")
var menuControlSmallTitleStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.SmallTitleAdaptiveState, title:"dial", imageName:"menu_smalltitle")
var menuControlImageStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.ImageAdaptiveState, title:"", imageName:"menu_bigimage")
let menuAppearanceStates = [AdaptiveStateEnum.DefaultAdaptiveState:menuСontrolDefaultStateValue,
AdaptiveStateEnum.SmallTitleAdaptiveState:menuControlSmallTitleStateValue,
AdaptiveStateEnum.ImageAdaptiveState:menuControlImageStateValue]
var menuAperance = AdaptiveButtonAppearance(states:menuAppearanceStates)
var moreСontrolDefaultStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.DefaultAdaptiveState, title:"more", imageName:"more")
var moreControlSmallTitleStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.SmallTitleAdaptiveState, title:"more", imageName:"more_smalltitle")
var moreControlImageStateValue = settingsManager.defaultStyleValuesForNormalState(AdaptiveStateEnum.ImageAdaptiveState, title:"", imageName:"more_bigimage")
let moreAppearanceStates = [AdaptiveStateEnum.DefaultAdaptiveState:moreСontrolDefaultStateValue,
AdaptiveStateEnum.SmallTitleAdaptiveState:moreControlSmallTitleStateValue,
AdaptiveStateEnum.ImageAdaptiveState:moreControlImageStateValue]
var moreAperance = AdaptiveButtonAppearance(states:moreAppearanceStates)
return [watchAppearance ,messageAperance,userAperance,menuAperance,moreAperance]
}
}

Some files were not shown because too many files have changed in this diff Show More