3 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
10 changed files with 80 additions and 95 deletions
@@ -21,7 +21,6 @@
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 */; };
6AD4002719F7896900630034 /* ButtonStateAppearanceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AD4002619F7896900630034 /* ButtonStateAppearanceProtocol.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 */; };
@@ -30,12 +29,10 @@
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 */; };
6AE7233D1A04F7BD003416B6 /* ButtonStateAppearanceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AD4002619F7896900630034 /* ButtonStateAppearanceProtocol.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 */; };
6AE723431A078071003416B6 /* ColorExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AE723421A078071003416B6 /* ColorExtension.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 */; };
@@ -59,11 +56,9 @@
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>"; };
6AD4002619F7896900630034 /* ButtonStateAppearanceProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ButtonStateAppearanceProtocol.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>"; };
6AE723421A078071003416B6 /* ColorExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ColorExtension.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; };
@@ -140,7 +135,6 @@
isa = PBXGroup;
children = (
6AD4002A19F7A0B800630034 /* AppearanceSerializationProtocol.swift */,
6AD4002619F7896900630034 /* ButtonStateAppearanceProtocol.swift */,
6AD1EC2819EFB8E2003F36A4 /* ControlStateProtocol.swift */,
);
name = Protocols;
@@ -168,7 +162,6 @@
isa = PBXGroup;
children = (
6AF450661A10F99A00AC30A4 /* Constants.swift */,
6AE723421A078071003416B6 /* ColorExtension.swift */,
6A156E3C1A08B322002A69AD /* Serializator */,
6AD4002C19F7A12200630034 /* Protocols */,
6AD1EC2719EFB521003F36A4 /* ControlStates */,
@@ -331,8 +324,6 @@
6AD1EC2919EFB8E2003F36A4 /* ControlStateProtocol.swift in Sources */,
6A156E3E1A08B38E002A69AD /* DictioanarySerializer.swift in Sources */,
6AAE857A19D329C6005672CA /* AdaptiveState.swift in Sources */,
6AE723431A078071003416B6 /* ColorExtension.swift in Sources */,
6AD4002719F7896900630034 /* ButtonStateAppearanceProtocol.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -344,7 +335,6 @@
6AE723351A04EE6F003416B6 /* ControlStateAppearanceTest.swift in Sources */,
6AE7233B1A04F7B6003416B6 /* AdaptiveButtonAppearance.swift in Sources */,
6AD1EC2B19F1165E003F36A4 /* TestTabBarItem.swift in Sources */,
6AE7233D1A04F7BD003416B6 /* ButtonStateAppearanceProtocol.swift in Sources */,
6AE723391A04F7B1003416B6 /* AdaptiveLaunchesState.swift in Sources */,
6A3ED0CE19ED05D8006F06DD /* AdaptiveLaunchesStateTest.swift in Sources */,
6AE7233F1A04F7C3003416B6 /* ControlStateValue.swift in Sources */,
@@ -31,16 +31,16 @@ public class AdaptiveButtonsStateManager <AdaptiveStateClass: AdaptiveState> {
public class func setupButtonsAppearanceFromState(adaptiveState:AdaptiveStateClass,buttonsAray:[AdaptiveApperanceProtocol],buttonsAppearances:[AdaptiveButtonAppearance]){
var state = adaptiveState.currentItemState
println(state?.rawValue)
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]
println(buttonApperance.stateDictionary)
if let controlStateValue = buttonApperance.stateDictionary[state!] {
println(controlStateValue)
let normalStateAppearenceObject = controlStateValue.controlStates[UIControlState.Normal.rawValue]
@@ -71,7 +71,7 @@ public class AdaptiveButtonsStateManager <AdaptiveStateClass: AdaptiveState> {
for (key, controlStateValue) in controlStateValue.controlStates{
if let titleFont = controlStateValue.font{
println(UIControlState(key).getStringKey())
button.setFontToAdaptiveButton(titleFont , controlState:UIControlState(key))
}
@@ -37,7 +37,7 @@ public class AdaptiveDateState: AdaptiveState {
func stateRemainDays (remainDays:Int,countDaysToSmallTextState:Int,countDaysToImageState:Int)->StateType{
var mode:StateType = .DefaultAdaptiveState
print(" DAYS \(remainDays) ")
if remainDays > countDaysToSmallTextState && remainDays < countDaysToImageState{
mode = .SmallTitleAdaptiveState
}else if remainDays > countDaysToImageState {
@@ -1,24 +0,0 @@
//
// ButtonStateApparenceProtocol.swift
// AdaptiveController
//
// Created by Arcilite on 22.10.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import UIKit
protocol ButtonStateAppearanceProtocol :AppearanceSerializationProtocol{
var title: AnyObject?{get set}
var font: AnyObject?{get set}
var imageName: AnyObject?{get set}
var backgroundImageName:AnyObject?{get set}
var titleOffset:AnyObject?{get set}
var imageInsets:AnyObject?{get set}
var titleColor:AnyObject?{get set}
var backgroundColor:AnyObject?{get set}
var enabled:Bool?{get set}
}
@@ -1,20 +0,0 @@
//
// ColorExtension.swift
// AdaptiveController
//
// Created by Arcilite on 03.11.14.
// Copyright (c) 2014 Ramotion. All rights reserved.
//
import Foundation
import UIKit
extension UIColor {
convenience init(rgb: UInt) {
self.init(
red: CGFloat((rgb & 0xFF0000) >> 16) / 255.0,
green: CGFloat((rgb & 0x00FF00) >> 8) / 255.0,
blue: CGFloat(rgb & 0x0000FF) / 255.0,
alpha: CGFloat(1.0)
)
}
}
@@ -14,23 +14,11 @@ import AdaptiveController
class AdaptiveButtonAppearanceTest: 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.
func testAppearanceSetup() {
var settingsManager = AppearenceSettingManager()
//
settingsManager.defaultStyleSettingsForNormalState(AdaptiveStateEnum.DefaultAdaptiveState,titleOffset:defaultOffset, imageInsets:defaultInsets, titleColor:UIColor.whiteColor(), font:defaultFont!, backgroundColor:UIColor.clearColor())
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())
@@ -59,21 +47,26 @@ class AdaptiveButtonAppearanceTest: XCTestCase {
testAppearance.setObjectDictionary(appearanceDictionary)
// XCTAssert(testAppearance.getTitleColorForState(kDefaultAdaptiveState) == UIColor.whiteColor(), "Fail color")
//XCTAssert(UIOffsetEqualToOffset(testAppearance.getTitleOffsetForState(kDefaultAdaptiveState),defaultOffset), "Fail offset")
// XCTAssert(UIEdgeInsetsEqualToEdgeInsets(defaultInsets, testAppearance.getImageInsetsForState(kDefaultAdaptiveState)), "Fail insets")
//
// XCTAssert(tabBarItem.text!.isEqualToString(""), "Fail text")
// XCTAssert(tabBarItem.font!.isEqual(defaultFont), "Fail font")
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.
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")
}
}
}
}
+2 -2
View File
@@ -52,9 +52,10 @@ And then you should setup an array of items Appearance object. You should set th
First, you should setup a style for each UI state:
```swift
var settingsManager = AppearenceSettingManager()
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 and image for each state
@@ -75,7 +76,6 @@ let messageAppearanceStates = [AdaptiveStateEnum.DefaultAdaptiveState:messageСo
es)
```
In alternative way you can setup all appearances settings in plist like on image
![Mou icon](http://i.imgur.com/zLP8zHF.png)
@@ -195,15 +195,15 @@
<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"/>
<rect key="frame" x="0.0" y="0.0" width="600" 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"/>
<constraint firstItem="fel-JW-y8K" firstAttribute="leading" secondItem="dgq-yB-Neb" secondAttribute="leading" id="lvq-kK-shl"/>
<constraint firstAttribute="trailing" secondItem="fel-JW-y8K" secondAttribute="trailing" id="mnN-oR-w60"/>
</constraints>
</view>
<tabBarItem key="tabBarItem" title="Item" id="uWZ-JL-cND" customClass="AdaptiveTabBarItem" customModule="example_count_launches_adaptive_tabbar" customModuleProvider="target"/>
@@ -338,12 +338,12 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "AdaptiveController/AdaptiveControllerTests/AdaptiveButtonAppearanceTest.swift"
timestampString = "437912119.172819"
timestampString = "438276611.63638"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "33"
endingLineNumber = "33"
landmarkName = "testExample()"
startingLineNumber = "21"
endingLineNumber = "21"
landmarkName = "testAppearanceSetup()"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
@@ -409,5 +409,51 @@
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "AdaptiveController/AdaptiveControllerTests/AdaptiveButtonAppearanceTest.swift"
timestampString = "438277726.218459"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "55"
endingLineNumber = "55"
landmarkName = "testAppearanceSetup()"
landmarkType = "5">
<Locations>
<Location
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "AdaptiveControllerTests.AdaptiveButtonAppearanceTest.testAppearanceSetup (AdaptiveControllerTests.AdaptiveButtonAppearanceTest)() -&gt; ()"
moduleName = "AdaptiveControllerTests"
urlString = "file:///Users/arcilite/adaptive-tab-bar/AdaptiveController/AdaptiveControllerTests/AdaptiveButtonAppearanceTest.swift"
timestampString = "438277726.876122"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "55"
endingLineNumber = "55"
offsetFromSymbolStart = "4712">
</Location>
<Location
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "AdaptiveControllerTests.AdaptiveButtonAppearanceTest.(testAppearanceSetup (AdaptiveControllerTests.AdaptiveButtonAppearanceTest) -&gt; () -&gt; ()).(implicit closure #2)"
moduleName = "AdaptiveControllerTests"
urlString = "file:///Users/arcilite/adaptive-tab-bar/AdaptiveController/AdaptiveControllerTests/AdaptiveButtonAppearanceTest.swift"
timestampString = "438277726.876251"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "55"
endingLineNumber = "55"
offsetFromSymbolStart = "24">
</Location>
</Locations>
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>