Compare commits
43 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 436078ef95 | |||
| 9657b66723 | |||
| e503a61104 | |||
| 5ca72e7dd6 | |||
| fb22bbadc7 | |||
| adacae3759 | |||
| 5444bf7d54 | |||
| 698641d00a | |||
| f3a656b853 | |||
| 14c9eeb019 | |||
| 7d42d0e6b8 | |||
| 09e2daf80f | |||
| d69eb37cfd | |||
| f7748068f7 | |||
| f157900e61 | |||
| e0ade0426e | |||
| b685dbfeb5 | |||
| 6d7158b1fd | |||
| a8e4925c3d | |||
| b266d12347 | |||
| 048da7d846 | |||
| 782ddc59c8 | |||
| 6966f6d46d | |||
| bd1509317f | |||
| e8e633be96 | |||
| 247ba17cfa | |||
| 471c99d888 | |||
| 6d09fba6aa | |||
| 5d937ce71b | |||
| 213b88b5a3 | |||
| dfbbd6ceb6 | |||
| 7d3c12b039 | |||
| 75478ab4e8 | |||
| 568d698abb | |||
| 28056d269e | |||
| 9a0d303366 | |||
| 78adac3472 | |||
| 254c23b384 | |||
| fea76dd14d | |||
| f04ebaa6c7 | |||
| 3aa3e3c938 | |||
| a023d54f19 | |||
| 7de9fbb5e4 |
Executable
+12
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'AdaptiveController'
|
||||
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' }
|
||||
s.summary = 'AdaptiveController is a Progressive Reduction Swift module for adding custom states to Native or Custom UI elements.'
|
||||
s.source = { :git => 'https://github.com/Ramotion/adaptive-tab-bar.git', :tag => "#{s.version}" }
|
||||
s.source_files = 'AdaptiveController/AdaptiveController/*.{h,swift}'
|
||||
s.frameworks = 'Swift'
|
||||
s.requires_arc = true
|
||||
end
|
||||
@@ -0,0 +1,33 @@
|
||||
# Contributing to a Project
|
||||
Now that you’ve 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 you’re using (and you don’t know how to fix it), have trouble following the documentation or have a question about the project – create an issue! There’s nothing to it and whatever issue you’re having, you’re 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 you’re 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 you’re 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 you’re able to patch the bug or add the feature yourself – fantastic, make a pull request with the code! Be sure you’ve read any documents on contributing, understand the license and have signed a CLA if required. Once you’ve 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.
|
||||
It’s 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 don’t 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 you’ve 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 – they’ll 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 you’ve received and go forth and pull request again – or create your own open source project.
|
||||
@@ -1,4 +1,10 @@
|
||||

|
||||
# Adaptive Tab Bar
|
||||
[](https://cocoapods.org/pods/AdaptiveController)
|
||||
[](http://cocoapods.org/pods/AdaptiveController)
|
||||
[](http://twitter.com/Ramotion)
|
||||
[](https://travis-ci.org/Ramotion/adaptive-tab-bar)
|
||||
|
||||
|
||||
AdaptiveController is a 'Progressive Reduction' Swift module for adding custom states to Native or Custom UI elements.
|
||||
|
||||
@@ -164,8 +170,16 @@ In AdaptiveDateState, we add custom init methods which decided what states have
|
||||
|
||||
You can customize different UI components if they adopt to the AdaptiveApperanceProtocol.
|
||||
|
||||
##About us
|
||||
## Licence
|
||||
|
||||
[Ramotion](http://Ramotion.com) is an iPhone app design and development company. We are ready for new interesting iOS App Development projects.
|
||||
Adaptive tab bar is released under the MIT license.
|
||||
See [LICENSE](./LICENSE.md) for details.
|
||||
|
||||
|
||||
## About
|
||||
The project maintained by [app development agency](http://ramotion.com?utm_source=gthb&utm_medium=special&utm_campaign=paper-switch) [Ramotion Inc.](http://ramotion.com?utm_source=gthb&utm_medium=special&utm_campaign=adaptive-tab-bar)]
|
||||
See our other [open-source projects](https://github.com/ramotion) or [hire](http://ramotion.com?utm_source=gthb&utm_medium=special&utm_campaign=adaptive-tab-bar) us to design, develop, and grow your product.
|
||||
|
||||
[](https://twitter.com/intent/tweet?text=https://github.com/ramotion/adaptive-tab-bar)
|
||||
[](https://twitter.com/ramotion)
|
||||
|
||||
Follow us on [twitter](http://twitter.com/ramotion).
|
||||
|
||||
Executable
+12
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'AdaptiveController'
|
||||
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' }
|
||||
s.summary = 'AdaptiveController is a Progressive Reduction Swift module for adding custom states to Native or Custom UI elements.'
|
||||
s.source = { :git => 'https://github.com/Ramotion/adaptive-tab-bar.git', :tag => "#{s.version}" }
|
||||
s.source_files = 'AdaptiveController/AdaptiveController/*.{h,swift}'
|
||||
s.frameworks = 'Swift'
|
||||
s.requires_arc = true
|
||||
end
|
||||
@@ -11,12 +11,14 @@
|
||||
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 */; };
|
||||
6A6270A619F1653900D02B1A /* watch@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6A6270A519F1653900D02B1A /* watch@2x.png */; };
|
||||
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 */; };
|
||||
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 */; };
|
||||
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 */
|
||||
@@ -26,12 +28,14 @@
|
||||
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>"; };
|
||||
6A6270A519F1653900D02B1A /* watch@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "watch@2x.png"; 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>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
@@ -135,10 +139,12 @@
|
||||
6AFBC6DD19D313D600D42578 /* AdaptiveControllerTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6A6270A519F1653900D02B1A /* watch@2x.png */,
|
||||
6A3ED0C919ED02DA006F06DD /* DateExtension.swift */,
|
||||
6AFBC6E019D313D600D42578 /* AdaptiveControllerTests.swift */,
|
||||
6A3ED0CB19ED058F006F06DD /* AdaptiveDateStateTest.swift */,
|
||||
6A3ED0CD19ED05D8006F06DD /* AdaptiveLaunchesStateTest.swift */,
|
||||
6AD1EC2A19F1165E003F36A4 /* TestTabBarItem.swift */,
|
||||
6AFBC6DE19D313D600D42578 /* Supporting Files */,
|
||||
);
|
||||
path = AdaptiveControllerTests;
|
||||
@@ -248,6 +254,7 @@
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6A6270A619F1653900D02B1A /* watch@2x.png in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -272,6 +279,7 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6AD1EC2B19F1165E003F36A4 /* TestTabBarItem.swift in Sources */,
|
||||
6A3ED0CE19ED05D8006F06DD /* AdaptiveLaunchesStateTest.swift in Sources */,
|
||||
6A3ED0CA19ED02DA006F06DD /* DateExtension.swift in Sources */,
|
||||
6A3ED0CC19ED058F006F06DD /* AdaptiveDateStateTest.swift in Sources */,
|
||||
|
||||
@@ -57,6 +57,8 @@ public class AdaptiveButtonAppearance: NSObject {
|
||||
}
|
||||
|
||||
public func setButonTitle(title:NSString, state:String){
|
||||
println(title)
|
||||
println(state)
|
||||
butonsTitleForStateDictionary.updateValue(title, forKey:state)
|
||||
}
|
||||
|
||||
|
||||
+9
-1
@@ -54,11 +54,19 @@ public class AdaptiveButtonsStateManager: NSObject {
|
||||
|
||||
var button :AdaptiveApperanceProtocol = buttonsAray[index]
|
||||
var buttonApperance = buttonsAppearance[index]
|
||||
button.setTitleToAdaptiveButton!(buttonApperance.getButonTitleForState(state))
|
||||
|
||||
let title = buttonApperance.getButonTitleForState(state)
|
||||
println("title: /(title)")
|
||||
println(NSString(format:"title %@",title))
|
||||
button.setTitleToAdaptiveButton!(title)
|
||||
|
||||
|
||||
button.setFontToAdaptiveButton!(buttonApperance.getButonTitleFontForState(state))
|
||||
|
||||
if let image = buttonApperance.getButonImageForState(state) {
|
||||
button.setImageToAdaptiveButton?(image)
|
||||
}else{
|
||||
|
||||
}
|
||||
|
||||
if let selectedImage = buttonApperance.getButonImageForState(state+selected) {
|
||||
|
||||
+139
-19
@@ -9,25 +9,21 @@
|
||||
import UIKit
|
||||
import XCTest
|
||||
import AdaptiveController
|
||||
|
||||
|
||||
|
||||
|
||||
class AdaptiveControllerTests: XCTestCase {
|
||||
|
||||
var adaptiveDateState:AdaptiveDateState?
|
||||
var adaptiveLaunchState:AdaptiveLaunchesState?
|
||||
class MockUIImage: UIImage {
|
||||
var checkImageString:String?
|
||||
|
||||
|
||||
}
|
||||
|
||||
override func setUp() {
|
||||
super.setUp()
|
||||
|
||||
var installDate = NSDate(dateString:"2014-07-7")
|
||||
|
||||
adaptiveDateState = AdaptiveDateState(installDate: installDate,currentDate:NSDate(),countDaysToSmallTextState:countDaysToSmallTextState,countDaysToImageState:countDaysToImageState)
|
||||
|
||||
var curentCountLaunches = 0
|
||||
|
||||
adaptiveLaunchState = AdaptiveLaunchesState(curentCountLaunches:curentCountLaunches,countLaunchesToSmallTextState:countDaysForSmaltextState,countLaunchesToImageState:countDaysForImageModeState)
|
||||
|
||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||
}
|
||||
|
||||
override func tearDown() {
|
||||
@@ -35,17 +31,141 @@ class AdaptiveControllerTests: XCTestCase {
|
||||
super.tearDown()
|
||||
}
|
||||
|
||||
func testExample() {
|
||||
func testDefaultState() {
|
||||
// This is an example of a functional test case.
|
||||
// AdaptiveButtonsStateManager(state: adaptiveState,buttonsAray:arrayButtons ,buttonsAppearance: buttonsAppearances)
|
||||
XCTAssert(true, "Pass")
|
||||
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(state: adaptiveDateState,buttonsAray:arrayButtons ,buttonsAppearance: 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 testPerformanceExample() {
|
||||
// This is an example of a performance test case.
|
||||
self.measureBlock() {
|
||||
// Put the code you want to measure the time of here.
|
||||
}
|
||||
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)
|
||||
|
||||
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)
|
||||
|
||||
|
||||
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 imageExtensionsForStates:Dictionary = [ kSmallTitleAdaptiveState:"_smalltitle",
|
||||
kImageAdaptiveState:"_bigimage",
|
||||
kSmallTitleAdaptiveState+selected :"_smalltitle",
|
||||
kImageAdaptiveState+selected:"_bigimage" ]
|
||||
|
||||
|
||||
var watchAppearance = AdaptiveButtonAppearance();
|
||||
|
||||
watchAppearance.setButonTitle("watch", state: kDefaultAdaptiveState)
|
||||
watchAppearance.setButonTitle("watch2", state: kSmallTitleAdaptiveState)
|
||||
watchAppearance.setButonTitle("", state: kImageAdaptiveState)
|
||||
watchAppearance.setTitleColor(UIColor.whiteColor(), state: kDefaultAdaptiveState)
|
||||
|
||||
watchAppearance.setButonTitleFontForState(defaultFont, state: kDefaultAdaptiveState)
|
||||
|
||||
watchAppearance.setButonTitleFontForState(defaultSmallTitleModeFont, state: kSmallTitleAdaptiveState)
|
||||
|
||||
|
||||
//watchAppearance.setImageNamesForStatesImageExtesions("watch", imageExtensionsForState:imageExtensionsForStates)
|
||||
|
||||
let mockImage = MockUIImage()
|
||||
mockImage.checkImageString = "default Image"
|
||||
|
||||
watchAppearance.setButtonImage(mockImage, state: kDefaultAdaptiveState)
|
||||
|
||||
|
||||
let mockSmallTitleImage = MockUIImage()
|
||||
mockSmallTitleImage.checkImageString = "smalltitle Image"
|
||||
|
||||
watchAppearance.setButtonImage(mockSmallTitleImage, state: kSmallTitleAdaptiveState)
|
||||
|
||||
let mockBigImageStateImage = MockUIImage()
|
||||
mockBigImageStateImage.checkImageString = "big Image"
|
||||
|
||||
watchAppearance.setButtonImage(mockBigImageStateImage, state: kImageAdaptiveState)
|
||||
|
||||
|
||||
watchAppearance.setImageInsets(defaultInsets, state: kDefaultAdaptiveState);
|
||||
|
||||
watchAppearance.setImageInsets(defaultSmallTitleModeImageInsets, state: kSmallTitleAdaptiveState)
|
||||
watchAppearance.setTitleOffset(defaultOffset, state: kDefaultAdaptiveState)
|
||||
watchAppearance.setImageInsets(defaultImageModeInsets, state: kImageAdaptiveState);
|
||||
|
||||
|
||||
return [watchAppearance]
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
+3
-6
@@ -10,6 +10,8 @@ import UIKit
|
||||
import XCTest
|
||||
import AdaptiveController
|
||||
|
||||
|
||||
|
||||
class AdaptiveDateStateTest: XCTestCase {
|
||||
|
||||
var adaptiveDateState:AdaptiveDateState?
|
||||
@@ -53,11 +55,6 @@ class AdaptiveDateStateTest: XCTestCase {
|
||||
XCTAssert(!adaptiveDateState!.isEqual(kImageAdaptiveState), "Fail ImageAdaptiveState")
|
||||
}
|
||||
|
||||
func testPerformanceExample() {
|
||||
// This is an example of a performance test case.
|
||||
self.measureBlock() {
|
||||
// Put the code you want to measure the time of here.
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
+5
-9
@@ -12,11 +12,10 @@ import AdaptiveController
|
||||
class AdaptiveLaunchesStateTest: XCTestCase {
|
||||
|
||||
var adaptiveLaunchState:AdaptiveLaunchesState?
|
||||
|
||||
|
||||
override func setUp() {
|
||||
super.setUp()
|
||||
// adaptiveDateState = AdaptiveDateState(installDate: installDate,currentDate:NSDate(),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() {
|
||||
@@ -48,14 +47,11 @@ class AdaptiveLaunchesStateTest: XCTestCase {
|
||||
|
||||
adaptiveLaunchState = AdaptiveLaunchesState(curentCountLaunches:curentCountLaunches,countLaunchesToSmallTextState:countDaysForSmaltextState,countLaunchesToImageState:countDaysForImageModeState)
|
||||
|
||||
|
||||
XCTAssert(!adaptiveLaunchState!.isEqual(kImageAdaptiveState), "Fail ImageAdaptiveState")
|
||||
|
||||
}
|
||||
|
||||
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,68 @@
|
||||
//
|
||||
// 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
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
func setTitleToAdaptiveButton(text: NSString){
|
||||
|
||||
self.text = text;
|
||||
|
||||
}
|
||||
|
||||
func setImageToAdaptiveButton(image: UIImage?){
|
||||
// XCTAssertNotNil(image)
|
||||
self.image = image
|
||||
|
||||
}
|
||||
|
||||
func setSelectedImageToAdaptiveButton(image: UIImage){
|
||||
self.selectedImage = image;
|
||||
|
||||
}
|
||||
|
||||
func setImageInsetsToAdaptiveButton(insets: UIEdgeInsets){
|
||||
self.insets = insets
|
||||
|
||||
}
|
||||
|
||||
func setTitleOffsetToAdaptiveButton(offset: UIOffset){
|
||||
|
||||
self.offset = offset;
|
||||
|
||||
}
|
||||
|
||||
func setTitleColorToAdaptiveButton(color: UIColor){
|
||||
self.color = color;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.9 KiB |
@@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 Ramotion Inc.
|
||||
|
||||
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.
|
||||
@@ -0,0 +1,171 @@
|
||||
# Adaptive Tab Bar
|
||||
|
||||
AdaptiveController is a 'Progressive Reduction' Swift module for adding custom states to Native or Custom UI elements.
|
||||
|
||||

|
||||
|
||||
##Tab Bar After Install
|
||||

|
||||
|
||||
##Tab Bar After Two Weeks
|
||||
|
||||

|
||||
|
||||
##Tab Bar After a Month
|
||||
|
||||

|
||||
|
||||
##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
|
||||
|
||||
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
|
||||
|
||||
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:
|
||||
|
||||
```swift
|
||||
var installDate = NSDate(dateString:"2014-09-18")
|
||||
var adaptiveState = AdaptiveDateState(installDate: installDate, currentDate:NSDate(), countDaysToSmallTextState:countDaysToSmallTextState, countDaysToImageState:countDaysToImageState)
|
||||
```
|
||||
Or count of launches for different state:
|
||||
|
||||
```swift
|
||||
var curentCountLaunches = 6
|
||||
var adaptiveState = AdaptiveLaunchesState(curentCountLaunches:curentCountLaunches, countLaunchesToSmallTextState:5, countLaunchesToImageState:7)
|
||||
```
|
||||
|
||||
And then you should setup an array of appearances. You should setup button images for each state for each apperance object:
|
||||
|
||||
```swift
|
||||
var buttonsAppearances = buttonsAppearancesGenerate() //func butonsAppearancesGenerate() -> [AdaptiveButtonApperance]
|
||||
```
|
||||
|
||||
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:
|
||||
|
||||
```swift
|
||||
var imageExtensionsForStates:Dictionary = [ kSmallTitleAdaptiveState:"_smalltitle", kImageAdaptiveState:"_bigimage", kSmallTitleAdaptiveState+selected :"_smalltitle", kImageAdaptiveState+selected:"_bigimage" ]
|
||||
```
|
||||
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.
|
||||
|
||||
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:
|
||||
|
||||
```swift
|
||||
var watchAppearance = AdaptiveButtonAppearance();
|
||||
watchAppearance.setButonTitle("watch", state: kDefaultAdaptiveState)
|
||||
watchAppearance.setButonTitle("watch", state: kSmallTitleAdaptiveState)
|
||||
watchAppearance.setButonTitle("", state: kImageAdaptiveState)
|
||||
```
|
||||
|
||||
Then you should setup your fonts for each state:
|
||||
|
||||
```swift
|
||||
watchAppearance.setButonTitleFontForState(yourDefaultFont, state: kDefaultAdaptiveState)
|
||||
watchAppearance.setButonTitleFontForState(yourDefaultSmallTitleModeFont, state: kSmallTitleAdaptiveState)
|
||||
```
|
||||
|
||||
Then you should set the default image and extensions for each state a function which automaticaly sets images for each state:
|
||||
|
||||
```swift
|
||||
watchAppearance.setImageNamesForStatesImageExtesions("watch", imageExtensionsForState:imageExtensionsForStates)
|
||||
```
|
||||
|
||||
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);
|
||||
```
|
||||
|
||||
Then you should setup сustom UITabBarItems which conform to the AdaptiveButtonsProtocol:
|
||||
|
||||
```swift
|
||||
var arrayButtons = tabBar.items as [AdaptiveTabBarItem]
|
||||
```
|
||||
|
||||
In your custom tab item, you should implement these methods from the protocol:
|
||||
|
||||
```swift
|
||||
@objc protocol AdaptiveApperanceProtocol {
|
||||
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)
|
||||
}
|
||||
```
|
||||
|
||||
An example implemetation of a protocol method from our custom tab bar item:
|
||||
|
||||
```swift
|
||||
func setTitleToAdaptiveButton(text: NSString) {
|
||||
self.title = text
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
Finally, you should init Adaptive State Manager with the objects you've setup:
|
||||
|
||||
```swift
|
||||
AdaptiveButtonsStateManager(state: adaptiveState, buttonsAray:arrayButtons, buttonsAppearance:butonsAppearances)
|
||||
```
|
||||
|
||||
|
||||
##Using Custom States For AdaptiveController
|
||||
|
||||
Like UITabBar for different custom applications states
|
||||
|
||||
We have a default AdaptiveState and with the help of inheritance, we can add
|
||||
new custom states to our state class. The new class in our situation is
|
||||
named AdaptiveDateState
|
||||
|
||||
In AdaptiveDateState, we can add new custom states like this:
|
||||
|
||||
```swift
|
||||
let kSmallTitleAdaptiveState = "kImageAdaptiveState"
|
||||
let kImageAdaptiveState = "kNormalImageAdaptiveState"
|
||||
```
|
||||
|
||||
And add methods which decide how the state relates to input parameters:
|
||||
|
||||
```swift
|
||||
var adaptiveState = AdaptiveDateState(installDate: installDate,currentDate:NSDate(),countDaysToSmallTextState:countDaysToSmallTextState,countDaysToImageState:countDaysToImageState)
|
||||
```
|
||||
|
||||
In AdaptiveDateState, we add custom init methods which decided what states have the Adaptive state object according to the input parameters:
|
||||
|
||||
```swift
|
||||
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
|
||||
}
|
||||
```
|
||||
|
||||
You can customize different UI components if they adopt to the AdaptiveApperanceProtocol.
|
||||
|
||||
##About us
|
||||
|
||||
[Ramotion](http://Ramotion.com) is an iPhone app design and development company. We are ready for new interesting iOS App Development projects.
|
||||
|
||||
Follow us on [twitter](http://twitter.com/ramotion).
|
||||
+6
-2
@@ -14,7 +14,9 @@
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "50"
|
||||
endingLineNumber = "50">
|
||||
endingLineNumber = "50"
|
||||
landmarkName = "application(_:didFinishLaunchingWithOptions:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
@@ -252,7 +254,9 @@
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "119"
|
||||
endingLineNumber = "119">
|
||||
endingLineNumber = "119"
|
||||
landmarkName = "buttonsAppearancesGenerate()"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
</Breakpoints>
|
||||
|
||||
+2
@@ -20,6 +20,7 @@
|
||||
6A5558E819E2BD1F00ED3B5C /* AdaptiveTabBarItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A5558E619E2BD1F00ED3B5C /* AdaptiveTabBarItem.swift */; };
|
||||
6A5558E919E2BD1F00ED3B5C /* TabBarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A5558E719E2BD1F00ED3B5C /* TabBarViewController.swift */; };
|
||||
6A55590019E2C1F900ED3B5C /* AdaptiveController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A5558FF19E2C1F900ED3B5C /* AdaptiveController.framework */; };
|
||||
6AD1EC2C19F15417003F36A4 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6A5558C119E2BAB100ED3B5C /* Images.xcassets */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
@@ -240,6 +241,7 @@
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6AD1EC2C19F15417003F36A4 /* Images.xcassets in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
||||
BIN
Binary file not shown.
+463
-1
@@ -31,9 +31,471 @@
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "33"
|
||||
endingLineNumber = "33"
|
||||
landmarkName = "testDefaultState()"
|
||||
landmarkName = "tearDown()"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AdaptiveController/AdaptiveController/AdaptiveButtonAppearance.swift"
|
||||
timestampString = "435240731.057037"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "60"
|
||||
endingLineNumber = "60"
|
||||
landmarkName = "setButonTitle(_:state:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AdaptiveController/AdaptiveController/AdaptiveButtonAppearance.swift"
|
||||
timestampString = "435241015.75753"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "68"
|
||||
endingLineNumber = "68"
|
||||
landmarkName = "getButonTitleForState(_:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AdaptiveController/AdaptiveController/AdaptiveButtonAppearance.swift"
|
||||
timestampString = "435241018.694539"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "71"
|
||||
endingLineNumber = "71"
|
||||
landmarkName = "getButonTitleForState(_:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AdaptiveController/AdaptiveController/AdaptiveButtonAppearance.swift"
|
||||
timestampString = "435241020.267833"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "73"
|
||||
endingLineNumber = "73"
|
||||
landmarkName = "getButonTitleForState(_:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AdaptiveController/AdaptiveController/AdaptiveButtonAppearance.swift"
|
||||
timestampString = "435241219.58597"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "67"
|
||||
endingLineNumber = "67"
|
||||
landmarkName = "getButonTitleForState(_:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AdaptiveController/AdaptiveControllerTests/TestTabBarItem.swift"
|
||||
timestampString = "435310351.588265"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "63"
|
||||
endingLineNumber = "63"
|
||||
landmarkName = "setTitleColorToAdaptiveButton(_:)"
|
||||
landmarkType = "5">
|
||||
<Locations>
|
||||
<Location
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "AdaptiveControllerTests.TestTabBarItem.setTitleColorToAdaptiveButton (AdaptiveControllerTests.TestTabBarItem)(ObjectiveC.UIColor) -> ()"
|
||||
moduleName = "AdaptiveControllerTests"
|
||||
urlString = "file:///Users/arcilite/adaptive-tab-bar/adaptive-tab-bar/AdaptiveController/AdaptiveControllerTests/TestTabBarItem.swift"
|
||||
timestampString = "435241968.974153"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "59"
|
||||
endingLineNumber = "59"
|
||||
offsetFromSymbolStart = "27">
|
||||
</Location>
|
||||
<Location
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "AdaptiveControllerTests.TestTabBarItem.(setTitleColorToAdaptiveButton (AdaptiveControllerTests.TestTabBarItem) -> (ObjectiveC.UIColor) -> ()).(implicit closure #1)"
|
||||
moduleName = "AdaptiveControllerTests"
|
||||
urlString = "file:///Users/arcilite/adaptive-tab-bar/adaptive-tab-bar/AdaptiveController/AdaptiveControllerTests/TestTabBarItem.swift"
|
||||
timestampString = "435241968.974291"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "59"
|
||||
endingLineNumber = "59"
|
||||
offsetFromSymbolStart = "48">
|
||||
</Location>
|
||||
</Locations>
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AdaptiveController/AdaptiveControllerTests/TestTabBarItem.swift"
|
||||
timestampString = "435310351.588265"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "42"
|
||||
endingLineNumber = "42"
|
||||
landmarkName = "setImageToAdaptiveButton(_:)"
|
||||
landmarkType = "5">
|
||||
<Locations>
|
||||
<Location
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "AdaptiveControllerTests.TestTabBarItem.setImageToAdaptiveButton (AdaptiveControllerTests.TestTabBarItem)(ObjectiveC.UIImage) -> ()"
|
||||
moduleName = "AdaptiveControllerTests"
|
||||
urlString = "file:///Users/arcilite/adaptive-tab-bar/adaptive-tab-bar/AdaptiveController/AdaptiveControllerTests/TestTabBarItem.swift"
|
||||
timestampString = "435241968.97443"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "41"
|
||||
endingLineNumber = "41"
|
||||
offsetFromSymbolStart = "27">
|
||||
</Location>
|
||||
<Location
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "AdaptiveControllerTests.TestTabBarItem.(setImageToAdaptiveButton (AdaptiveControllerTests.TestTabBarItem) -> (ObjectiveC.UIImage) -> ()).(implicit closure #1)"
|
||||
moduleName = "AdaptiveControllerTests"
|
||||
urlString = "file:///Users/arcilite/adaptive-tab-bar/adaptive-tab-bar/AdaptiveController/AdaptiveControllerTests/TestTabBarItem.swift"
|
||||
timestampString = "435241968.974569"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "41"
|
||||
endingLineNumber = "41"
|
||||
offsetFromSymbolStart = "48">
|
||||
</Location>
|
||||
</Locations>
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AdaptiveController/AdaptiveControllerTests/TestTabBarItem.swift"
|
||||
timestampString = "435310351.588265"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "47"
|
||||
endingLineNumber = "47"
|
||||
landmarkName = "setSelectedImageToAdaptiveButton(_:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AdaptiveController/AdaptiveControllerTests/TestTabBarItem.swift"
|
||||
timestampString = "435246058.504401"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "29"
|
||||
endingLineNumber = "29"
|
||||
landmarkName = "setFontToAdaptiveButton(_:)"
|
||||
landmarkType = "5">
|
||||
<Locations>
|
||||
<Location
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "AdaptiveControllerTests.TestTabBarItem.setFontToAdaptiveButton (AdaptiveControllerTests.TestTabBarItem)(ObjectiveC.UIFont) -> ()"
|
||||
moduleName = "AdaptiveControllerTests"
|
||||
urlString = "file:///Users/arcilite/adaptive-tab-bar/adaptive-tab-bar/AdaptiveController/AdaptiveControllerTests/TestTabBarItem.swift"
|
||||
timestampString = "435244047.515732"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "30"
|
||||
endingLineNumber = "30"
|
||||
offsetFromSymbolStart = "237">
|
||||
</Location>
|
||||
<Location
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "AdaptiveControllerTests.TestTabBarItem.(setFontToAdaptiveButton (AdaptiveControllerTests.TestTabBarItem) -> (ObjectiveC.UIFont) -> ()).(implicit closure #2)"
|
||||
moduleName = "AdaptiveControllerTests"
|
||||
urlString = "file:///Users/arcilite/adaptive-tab-bar/adaptive-tab-bar/AdaptiveController/AdaptiveControllerTests/TestTabBarItem.swift"
|
||||
timestampString = "435244047.516049"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "30"
|
||||
endingLineNumber = "30"
|
||||
offsetFromSymbolStart = "48">
|
||||
</Location>
|
||||
</Locations>
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AdaptiveController/AdaptiveControllerTests/TestTabBarItem.swift"
|
||||
timestampString = "435246058.504401"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "35"
|
||||
endingLineNumber = "35"
|
||||
landmarkName = "setTitleToAdaptiveButton(_:)"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AdaptiveController/AdaptiveControllerTests/TestTabBarItem.swift"
|
||||
timestampString = "435242969.357178"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "29"
|
||||
endingLineNumber = "29"
|
||||
landmarkName = "setFontToAdaptiveButton(_:)"
|
||||
landmarkType = "5">
|
||||
<Locations>
|
||||
<Location
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "AdaptiveControllerTests.TestTabBarItem.setFontToAdaptiveButton (AdaptiveControllerTests.TestTabBarItem)(ObjectiveC.UIFont) -> ()"
|
||||
moduleName = "AdaptiveControllerTests"
|
||||
urlString = "file:///Users/arcilite/adaptive-tab-bar/adaptive-tab-bar/AdaptiveController/AdaptiveControllerTests/TestTabBarItem.swift"
|
||||
timestampString = "435243036.196487"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "29"
|
||||
endingLineNumber = "29"
|
||||
offsetFromSymbolStart = "52">
|
||||
</Location>
|
||||
<Location
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "AdaptiveControllerTests.TestTabBarItem.(setFontToAdaptiveButton (AdaptiveControllerTests.TestTabBarItem) -> (ObjectiveC.UIFont) -> ()).(implicit closure #1)"
|
||||
moduleName = "AdaptiveControllerTests"
|
||||
urlString = "file:///Users/arcilite/adaptive-tab-bar/adaptive-tab-bar/AdaptiveController/AdaptiveControllerTests/TestTabBarItem.swift"
|
||||
timestampString = "435243036.196689"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "29"
|
||||
endingLineNumber = "29"
|
||||
offsetFromSymbolStart = "15">
|
||||
</Location>
|
||||
</Locations>
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AdaptiveController/AdaptiveController/AdaptiveButtonsStateManager.swift"
|
||||
timestampString = "435309147.908624"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "69"
|
||||
endingLineNumber = "69"
|
||||
landmarkName = "setButtonsState(_:buttonsAray:buttonsAppearance:)"
|
||||
landmarkType = "5">
|
||||
<Locations>
|
||||
<Location
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "AdaptiveController.AdaptiveButtonsStateManager.setButtonsState (AdaptiveController.AdaptiveButtonsStateManager)(AdaptiveController.AdaptiveState, buttonsAray : Swift.Array<AdaptiveController.AdaptiveApperanceProtocol>, buttonsAppearance : Swift.Array<AdaptiveController.AdaptiveButtonAppearance>) -> ()"
|
||||
moduleName = "AdaptiveController"
|
||||
urlString = "file:///Users/arcilite/adaptive-tab-bar/adaptive-tab-bar/AdaptiveController/AdaptiveController/AdaptiveButtonsStateManager.swift"
|
||||
timestampString = "435309261.958128"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "70"
|
||||
endingLineNumber = "70"
|
||||
offsetFromSymbolStart = "4991">
|
||||
</Location>
|
||||
<Location
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "AdaptiveController.AdaptiveButtonsStateManager.setButtonsState (AdaptiveController.AdaptiveButtonsStateManager)(AdaptiveController.AdaptiveState, buttonsAray : Swift.Array<AdaptiveController.AdaptiveApperanceProtocol>, buttonsAppearance : Swift.Array<AdaptiveController.AdaptiveButtonAppearance>) -> ()"
|
||||
moduleName = "AdaptiveController"
|
||||
urlString = "file:///Users/arcilite/adaptive-tab-bar/adaptive-tab-bar/AdaptiveController/AdaptiveController/AdaptiveButtonsStateManager.swift"
|
||||
timestampString = "435309261.958306"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "70"
|
||||
endingLineNumber = "70"
|
||||
offsetFromSymbolStart = "5343">
|
||||
</Location>
|
||||
</Locations>
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AdaptiveController/AdaptiveController/AdaptiveButtonsStateManager.swift"
|
||||
timestampString = "435309161.63493"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "67"
|
||||
endingLineNumber = "67"
|
||||
landmarkName = "setButtonsState(_:buttonsAray:buttonsAppearance:)"
|
||||
landmarkType = "5">
|
||||
<Locations>
|
||||
<Location
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "AdaptiveController.AdaptiveButtonsStateManager.setButtonsState (AdaptiveController.AdaptiveButtonsStateManager)(AdaptiveController.AdaptiveState, buttonsAray : Swift.Array<AdaptiveController.AdaptiveApperanceProtocol>, buttonsAppearance : Swift.Array<AdaptiveController.AdaptiveButtonAppearance>) -> ()"
|
||||
moduleName = "AdaptiveController"
|
||||
urlString = "file:///Users/arcilite/adaptive-tab-bar/adaptive-tab-bar/AdaptiveController/AdaptiveController/AdaptiveButtonsStateManager.swift"
|
||||
timestampString = "435309261.958489"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "67"
|
||||
endingLineNumber = "67"
|
||||
offsetFromSymbolStart = "3885">
|
||||
</Location>
|
||||
<Location
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "reabstraction thunk helper from @callee_owned (@unowned Swift.Optional<ObjectiveC.UIImage>) -> (@unowned ()) to @callee_owned (@owned Swift.Optional<ObjectiveC.UIImage>) -> (@unowned ())"
|
||||
moduleName = "AdaptiveController"
|
||||
urlString = "file:///Users/arcilite/adaptive-tab-bar/adaptive-tab-bar/AdaptiveController/AdaptiveController/AdaptiveButtonsStateManager.swift"
|
||||
timestampString = "435309261.958655"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "67"
|
||||
endingLineNumber = "67"
|
||||
offsetFromSymbolStart = "15">
|
||||
</Location>
|
||||
<Location
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "reabstraction thunk helper from @callee_owned (@owned Swift.Optional<ObjectiveC.UIImage>) -> (@unowned ()) to @callee_owned (@in Swift.Optional<ObjectiveC.UIImage>) -> (@out ())"
|
||||
moduleName = "AdaptiveController"
|
||||
urlString = "file:///Users/arcilite/adaptive-tab-bar/adaptive-tab-bar/AdaptiveController/AdaptiveController/AdaptiveButtonsStateManager.swift"
|
||||
timestampString = "435309261.958823"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "67"
|
||||
endingLineNumber = "67"
|
||||
offsetFromSymbolStart = "16">
|
||||
</Location>
|
||||
<Location
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "reabstraction thunk helper from @callee_owned (@in Swift.Optional<ObjectiveC.UIImage>) -> (@out ()) to @callee_owned (@owned Swift.Optional<ObjectiveC.UIImage>) -> (@unowned ())"
|
||||
moduleName = "AdaptiveController"
|
||||
urlString = "file:///Users/arcilite/adaptive-tab-bar/adaptive-tab-bar/AdaptiveController/AdaptiveController/AdaptiveButtonsStateManager.swift"
|
||||
timestampString = "435309261.959034"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "67"
|
||||
endingLineNumber = "67"
|
||||
offsetFromSymbolStart = "20">
|
||||
</Location>
|
||||
</Locations>
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AdaptiveController/AdaptiveController/AdaptiveButtonsStateManager.swift"
|
||||
timestampString = "435309265.926216"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "68"
|
||||
endingLineNumber = "68"
|
||||
landmarkName = "setButtonsState(_:buttonsAray:buttonsAppearance:)"
|
||||
landmarkType = "5">
|
||||
<Locations>
|
||||
<Location
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "AdaptiveController.AdaptiveButtonsStateManager.setButtonsState (AdaptiveController.AdaptiveButtonsStateManager)(AdaptiveController.AdaptiveState, buttonsAray : Swift.Array<AdaptiveController.AdaptiveApperanceProtocol>, buttonsAppearance : Swift.Array<AdaptiveController.AdaptiveButtonAppearance>) -> ()"
|
||||
moduleName = "AdaptiveController"
|
||||
urlString = "file:///Users/arcilite/adaptive-tab-bar/adaptive-tab-bar/AdaptiveController/AdaptiveController/AdaptiveButtonsStateManager.swift"
|
||||
timestampString = "435309265.927959"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "70"
|
||||
endingLineNumber = "70"
|
||||
offsetFromSymbolStart = "4991">
|
||||
</Location>
|
||||
<Location
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "AdaptiveController.AdaptiveButtonsStateManager.setButtonsState (AdaptiveController.AdaptiveButtonsStateManager)(AdaptiveController.AdaptiveState, buttonsAray : Swift.Array<AdaptiveController.AdaptiveApperanceProtocol>, buttonsAppearance : Swift.Array<AdaptiveController.AdaptiveButtonAppearance>) -> ()"
|
||||
moduleName = "AdaptiveController"
|
||||
urlString = "file:///Users/arcilite/adaptive-tab-bar/adaptive-tab-bar/AdaptiveController/AdaptiveController/AdaptiveButtonsStateManager.swift"
|
||||
timestampString = "435309265.928192"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "70"
|
||||
endingLineNumber = "70"
|
||||
offsetFromSymbolStart = "5343">
|
||||
</Location>
|
||||
</Locations>
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
</Breakpoints>
|
||||
</Bucket>
|
||||
|
||||
+39
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 12 KiB |
Reference in New Issue
Block a user