Compare commits

..
16 Commits
Author SHA1 Message Date
Florian Gabach 4960d608b4 Bump to 2.0 2017-09-17 13:21:40 +02:00
Florian Gabach 3b25741375 Fix tableView scroll when loading 2017-09-08 13:51:53 +02:00
Florian Gabach e3d7e76f14 Weak self 2017-09-03 09:57:38 +02:00
Florian Gabach 2ae380ced9 Swift 4 fix 2017-09-03 09:55:34 +02:00
Florian Gabach 43b76c064c Swift 4 2017-06-27 09:21:16 +02:00
Florian Gabach 242b6ae368 Add demo logo 2017-05-07 09:40:46 +02:00
Florian Gabach 6ba3bf7309 Clean 2017-04-22 11:42:34 +02:00
Florian Gabach d95b8e9225 Bump 2017-04-04 17:51:57 +02:00
Florian Gabach bd9563a7d0 Bump 2017-04-04 17:51:39 +02:00
Florian Gabach 3551efffa5 Add Swift version 2017-04-04 17:47:04 +02:00
Florian Gabach 02c58efb18 Fix sources path 2017-04-04 17:45:47 +02:00
Florian Gabach ea56245297 Bump version 2017-04-04 17:44:40 +02:00
Florian Gabach 8d6f674260 Fix exemple 2017-04-04 17:43:54 +02:00
Florian Gabach 94c2ca5a4e Add demo 2017-04-04 17:35:09 +02:00
Florian Gabach df1a100a71 Add Carthage info 2017-04-04 17:20:30 +02:00
Florian Gabach c5e24d503d Add ressources folder 2017-04-04 17:16:48 +02:00
45 changed files with 943 additions and 38 deletions
+1
View File
@@ -0,0 +1 @@
4.0
+9
View File
@@ -1,6 +1,15 @@
Changelog
==========
### 2.0
- Swift 4 version
### 1.0.8
- Fix architecture
- Add Carthage support
### 1.0.5
- Fix default customisation
@@ -0,0 +1,365 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
76EAA8651E93F2CC009A41DA /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA8641E93F2CC009A41DA /* AppDelegate.swift */; };
76EAA8671E93F2CC009A41DA /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA8661E93F2CC009A41DA /* ViewController.swift */; };
76EAA86A1E93F2CC009A41DA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 76EAA8681E93F2CC009A41DA /* Main.storyboard */; };
76EAA86C1E93F2CC009A41DA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 76EAA86B1E93F2CC009A41DA /* Assets.xcassets */; };
76EAA86F1E93F2CC009A41DA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 76EAA86D1E93F2CC009A41DA /* LaunchScreen.storyboard */; };
76EAA8881E93F666009A41DA /* OpenSourceTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA8871E93F666009A41DA /* OpenSourceTableViewCell.swift */; };
76EAA88D1E93F675009A41DA /* LicenceDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA88A1E93F675009A41DA /* LicenceDownloader.swift */; };
76EAA88E1E93F675009A41DA /* LicenceFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA88B1E93F675009A41DA /* LicenceFile.swift */; };
76EAA88F1E93F675009A41DA /* OpenSourceControllerConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA88C1E93F675009A41DA /* OpenSourceControllerConfig.swift */; };
76EAA8911E93F67B009A41DA /* Array+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA8901E93F67B009A41DA /* Array+Extensions.swift */; };
76EAA8941E93F681009A41DA /* OpenSourceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA8921E93F681009A41DA /* OpenSourceController.swift */; };
76EAA8951E93F681009A41DA /* OpenSourceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA8931E93F681009A41DA /* OpenSourceViewController.swift */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
76EAA8611E93F2CC009A41DA /* OpenSourceControllerDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OpenSourceControllerDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
76EAA8641E93F2CC009A41DA /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
76EAA8661E93F2CC009A41DA /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
76EAA8691E93F2CC009A41DA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
76EAA86B1E93F2CC009A41DA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
76EAA86E1E93F2CC009A41DA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
76EAA8701E93F2CC009A41DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
76EAA8871E93F666009A41DA /* OpenSourceTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OpenSourceTableViewCell.swift; path = ../../Sources/View/OpenSourceTableViewCell.swift; sourceTree = "<group>"; };
76EAA88A1E93F675009A41DA /* LicenceDownloader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LicenceDownloader.swift; path = ../../Sources/Model/LicenceDownloader.swift; sourceTree = "<group>"; };
76EAA88B1E93F675009A41DA /* LicenceFile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LicenceFile.swift; path = ../../Sources/Model/LicenceFile.swift; sourceTree = "<group>"; };
76EAA88C1E93F675009A41DA /* OpenSourceControllerConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OpenSourceControllerConfig.swift; path = ../../Sources/Model/OpenSourceControllerConfig.swift; sourceTree = "<group>"; };
76EAA8901E93F67B009A41DA /* Array+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "Array+Extensions.swift"; path = "../../Sources/Extensions/Array+Extensions.swift"; sourceTree = "<group>"; };
76EAA8921E93F681009A41DA /* OpenSourceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OpenSourceController.swift; path = ../../Sources/Controller/OpenSourceController.swift; sourceTree = "<group>"; };
76EAA8931E93F681009A41DA /* OpenSourceViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OpenSourceViewController.swift; path = ../../Sources/Controller/OpenSourceViewController.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
76EAA85E1E93F2CC009A41DA /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
76EAA8581E93F2CC009A41DA = {
isa = PBXGroup;
children = (
76EAA8631E93F2CC009A41DA /* OpenSourceControllerDemo */,
76EAA8621E93F2CC009A41DA /* Products */,
);
sourceTree = "<group>";
};
76EAA8621E93F2CC009A41DA /* Products */ = {
isa = PBXGroup;
children = (
76EAA8611E93F2CC009A41DA /* OpenSourceControllerDemo.app */,
);
name = Products;
sourceTree = "<group>";
};
76EAA8631E93F2CC009A41DA /* OpenSourceControllerDemo */ = {
isa = PBXGroup;
children = (
76EAA8641E93F2CC009A41DA /* AppDelegate.swift */,
76EAA8661E93F2CC009A41DA /* ViewController.swift */,
76EAA8891E93F66A009A41DA /* Sources */,
76EAA8681E93F2CC009A41DA /* Main.storyboard */,
76EAA86D1E93F2CC009A41DA /* LaunchScreen.storyboard */,
76EAA86B1E93F2CC009A41DA /* Assets.xcassets */,
76EAA8701E93F2CC009A41DA /* Info.plist */,
);
path = OpenSourceControllerDemo;
sourceTree = "<group>";
};
76EAA8891E93F66A009A41DA /* Sources */ = {
isa = PBXGroup;
children = (
76EAA8921E93F681009A41DA /* OpenSourceController.swift */,
76EAA8931E93F681009A41DA /* OpenSourceViewController.swift */,
76EAA8901E93F67B009A41DA /* Array+Extensions.swift */,
76EAA88A1E93F675009A41DA /* LicenceDownloader.swift */,
76EAA88B1E93F675009A41DA /* LicenceFile.swift */,
76EAA88C1E93F675009A41DA /* OpenSourceControllerConfig.swift */,
76EAA8871E93F666009A41DA /* OpenSourceTableViewCell.swift */,
);
name = Sources;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
76EAA8601E93F2CC009A41DA /* OpenSourceControllerDemo */ = {
isa = PBXNativeTarget;
buildConfigurationList = 76EAA87E1E93F2CC009A41DA /* Build configuration list for PBXNativeTarget "OpenSourceControllerDemo" */;
buildPhases = (
76EAA85D1E93F2CC009A41DA /* Sources */,
76EAA85E1E93F2CC009A41DA /* Frameworks */,
76EAA85F1E93F2CC009A41DA /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = OpenSourceControllerDemo;
productName = OpenSourceControllerDemo;
productReference = 76EAA8611E93F2CC009A41DA /* OpenSourceControllerDemo.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
76EAA8591E93F2CC009A41DA /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0830;
LastUpgradeCheck = 0900;
ORGANIZATIONNAME = OpenSourceController;
TargetAttributes = {
76EAA8601E93F2CC009A41DA = {
CreatedOnToolsVersion = 8.3;
DevelopmentTeam = 62PP362QNQ;
LastSwiftMigration = 0900;
ProvisioningStyle = Automatic;
};
};
};
buildConfigurationList = 76EAA85C1E93F2CC009A41DA /* Build configuration list for PBXProject "OpenSourceControllerDemo" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 76EAA8581E93F2CC009A41DA;
productRefGroup = 76EAA8621E93F2CC009A41DA /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
76EAA8601E93F2CC009A41DA /* OpenSourceControllerDemo */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
76EAA85F1E93F2CC009A41DA /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
76EAA86F1E93F2CC009A41DA /* LaunchScreen.storyboard in Resources */,
76EAA86C1E93F2CC009A41DA /* Assets.xcassets in Resources */,
76EAA86A1E93F2CC009A41DA /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
76EAA85D1E93F2CC009A41DA /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
76EAA88D1E93F675009A41DA /* LicenceDownloader.swift in Sources */,
76EAA88E1E93F675009A41DA /* LicenceFile.swift in Sources */,
76EAA8951E93F681009A41DA /* OpenSourceViewController.swift in Sources */,
76EAA8881E93F666009A41DA /* OpenSourceTableViewCell.swift in Sources */,
76EAA8911E93F67B009A41DA /* Array+Extensions.swift in Sources */,
76EAA8941E93F681009A41DA /* OpenSourceController.swift in Sources */,
76EAA8671E93F2CC009A41DA /* ViewController.swift in Sources */,
76EAA88F1E93F675009A41DA /* OpenSourceControllerConfig.swift in Sources */,
76EAA8651E93F2CC009A41DA /* AppDelegate.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
76EAA8681E93F2CC009A41DA /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
76EAA8691E93F2CC009A41DA /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
76EAA86D1E93F2CC009A41DA /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
76EAA86E1E93F2CC009A41DA /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
76EAA87C1E93F2CC009A41DA /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
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_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
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_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";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
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",
"$(inherited)",
);
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 = 10.3;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
76EAA87D1E93F2CC009A41DA /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
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_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
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_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";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
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;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 10.3;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
76EAA87F1E93F2CC009A41DA /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
DEVELOPMENT_TEAM = 62PP362QNQ;
INFOPLIST_FILE = OpenSourceControllerDemo/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.fg.OpenSourceControllerDemo;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
};
name = Debug;
};
76EAA8801E93F2CC009A41DA /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
DEVELOPMENT_TEAM = 62PP362QNQ;
INFOPLIST_FILE = OpenSourceControllerDemo/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.fg.OpenSourceControllerDemo;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
76EAA85C1E93F2CC009A41DA /* Build configuration list for PBXProject "OpenSourceControllerDemo" */ = {
isa = XCConfigurationList;
buildConfigurations = (
76EAA87C1E93F2CC009A41DA /* Debug */,
76EAA87D1E93F2CC009A41DA /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
76EAA87E1E93F2CC009A41DA /* Build configuration list for PBXNativeTarget "OpenSourceControllerDemo" */ = {
isa = XCConfigurationList;
buildConfigurations = (
76EAA87F1E93F2CC009A41DA /* Debug */,
76EAA8801E93F2CC009A41DA /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 76EAA8591E93F2CC009A41DA /* Project object */;
}
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:OpenSourceControllerDemo.xcodeproj">
</FileRef>
</Workspace>
@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0900"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "76EAA8601E93F2CC009A41DA"
BuildableName = "OpenSourceControllerDemo.app"
BlueprintName = "OpenSourceControllerDemo"
ReferencedContainer = "container:OpenSourceControllerDemo.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "76EAA8741E93F2CC009A41DA"
BuildableName = "OpenSourceControllerDemoUITests.xctest"
BlueprintName = "OpenSourceControllerDemoUITests"
ReferencedContainer = "container:OpenSourceControllerDemo.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "76EAA8601E93F2CC009A41DA"
BuildableName = "OpenSourceControllerDemo.app"
BlueprintName = "OpenSourceControllerDemo"
ReferencedContainer = "container:OpenSourceControllerDemo.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "76EAA8601E93F2CC009A41DA"
BuildableName = "OpenSourceControllerDemo.app"
BlueprintName = "OpenSourceControllerDemo"
ReferencedContainer = "container:OpenSourceControllerDemo.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "76EAA8601E93F2CC009A41DA"
BuildableName = "OpenSourceControllerDemo.app"
BlueprintName = "OpenSourceControllerDemo"
ReferencedContainer = "container:OpenSourceControllerDemo.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
@@ -0,0 +1,27 @@
<?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>OpenSourceControllerDemo.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>76EAA8601E93F2CC009A41DA</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>76EAA8741E93F2CC009A41DA</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>
@@ -0,0 +1,46 @@
//
// AppDelegate.swift
// OpenSourceControllerDemo
//
// Created by Florian Gabach on 04/04/2017.
// Copyright © 2017 OpenSourceController. All rights reserved.
//
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}
func applicationWillResignActive(_ application: UIApplication) {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
}
func applicationDidEnterBackground(_ application: UIApplication) {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}
func applicationWillEnterForeground(_ application: UIApplication) {
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}
func applicationDidBecomeActive(_ application: UIApplication) {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}
func applicationWillTerminate(_ application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
}
@@ -0,0 +1,115 @@
{
"images" : [
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "logo 8-1.png",
"scale" : "2x"
},
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "logo 8.png",
"scale" : "3x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "logo 9-1.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "logo 9.png",
"scale" : "3x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "logo 10-3.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "logo 10-2.png",
"scale" : "3x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "logo 10-1.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "logo 10.png",
"scale" : "3x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "logo 4-1.png",
"scale" : "1x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "logo 4.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "logo 5-1.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "logo 5.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "logo 6-1.png",
"scale" : "1x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "logo 6.png",
"scale" : "2x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "logo 7-2.png",
"scale" : "1x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "logo 7-1.png",
"scale" : "2x"
},
{
"size" : "83.5x83.5",
"idiom" : "ipad",
"filename" : "logo 7.png",
"scale" : "2x"
},
{
"idiom" : "ios-marketing",
"size" : "1024x1024",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11134" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11106"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
<viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
</document>
@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13196" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13173"/>
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="ViewController" customModule="OpenSourceControllerDemo" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="LI4-fC-2Ry">
<rect key="frame" x="23" y="318" width="328" height="30"/>
<state key="normal" title="Show me"/>
<connections>
<action selector="showOpenSource:" destination="BYZ-38-t0r" eventType="touchUpInside" id="vmT-jj-Xvr"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="LI4-fC-2Ry" firstAttribute="centerY" secondItem="8bC-Xf-vdC" secondAttribute="centerY" id="jXk-ZK-0PF"/>
<constraint firstItem="LI4-fC-2Ry" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leadingMargin" constant="7" id="q0g-Cs-CVt"/>
<constraint firstItem="LI4-fC-2Ry" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="wVV-oT-zRH"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="136.80000000000001" y="138.98050974512745"/>
</scene>
</scenes>
</document>
@@ -0,0 +1,45 @@
<?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>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
@@ -0,0 +1,82 @@
//
// ViewController.swift
// OpenSourceControllerDemo
//
// Created by Florian Gabach on 04/04/2017.
// Copyright © 2017 OpenSourceController. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
// MARK: - Lifecycle
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.
}
// MARK: - Action
/// Handle button click & show the controller with licences
@IBAction func showOpenSource(_ sender: Any) {
// Create controller
let openSourceVC = OpenSourceController()
// Apply some customisation if you want
//self.controllerCustomUI(openSourceVC: openSourceVC)
// Init with LicenceFile object
openSourceVC.licences = [LicenceFile(title: "FacebookImagePicker",
url: "https://raw.githubusercontent.com/terflogag/FacebookImagePicker/master/LICENSE"),
LicenceFile(title: "JSQMessagesViewController",
url: "https://raw.githubusercontent.com/jessesquires/JSQMessagesViewController/develop/LICENSE"),
LicenceFile(title: "OpenSourceController",
url: "https://raw.githubusercontent.com/terflogag/OpenSourceController/master/LICENSE"),
LicenceFile(title: "PermissionScope",
url: "https://raw.githubusercontent.com/nickoneill/PermissionScope/master/LICENSE"),
LicenceFile(title: "EasyTipView",
url: "https://raw.githubusercontent.com/teodorpatras/EasyTipView/master/LICENSE"),
LicenceFile(title: "ReachabilitySwift",
url: "https://raw.githubusercontent.com/ashleymills/Reachability.swift/master/LICENSE"),
LicenceFile(title: "KeychainAccess",
url: "https://raw.githubusercontent.com/kishikawakatsumi/KeychainAccess/master/LICENSE")]
// Present controller
openSourceVC.presentOpenSourceController(from: self)
}
// Customization
fileprivate func controllerCustomUI(openSourceVC: OpenSourceController) {
// Navigation bar title
openSourceVC.config.title = "MyCustomTitle"
// Navigation bar tint color
openSourceVC.config.uiConfig.barTintColor = UIColor.red
// Close button color
openSourceVC.config.uiConfig.closeButtonColor = UIColor.white
// BackgroundColor
openSourceVC.config.uiConfig.backgroundColor = UIColor.red.withAlphaComponent(0.6)
// Licence text color
openSourceVC.config.uiConfig.licenceTextColor = UIColor.white
// Navigation bar title color
openSourceVC.config.uiConfig.titleColor = UIColor.white
// Licence cell background color
openSourceVC.config.uiConfig.licenceBackgroundColor = UIColor.red
// Verbose mode
openSourceVC.config.verbose = true
}
}
+2 -2
View File
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'OpenSourceController'
s.version = '1.0.5'
s.version = '2.0'
s.summary = 'Display all the librarys licence used in your application. Enjoy !'
s.description = 'Display a screen with all licence used in your apply can be painful to maintain. OpenSourceController was built to respond to this problem. OpenSourceController is a simple parser to display the licences which are used in your application.'
s.homepage = 'https://github.com/terflogag/OpenSourceController'
@@ -8,5 +8,5 @@ s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'Florian Gabach' => 'contact@floriangabach.fr' }
s.source = { :git => 'https://github.com/terflogag/OpenSourceController.git', :tag => s.version.to_s }
s.ios.deployment_target = '9.0'
s.source_files = 'OpenSourceController/Classes/**/*'
s.source_files = 'Sources/**/*'
end
+18 -6
View File
@@ -205,7 +205,7 @@
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0720;
LastUpgradeCheck = 0810;
LastUpgradeCheck = 0900;
ORGANIZATIONNAME = OpenSourceController;
TargetAttributes = {
52D6D97B1BEFF229002C0205 = {
@@ -214,7 +214,7 @@
};
52D6D9851BEFF229002C0205 = {
CreatedOnToolsVersion = 7.1;
LastSwiftMigration = 0800;
LastSwiftMigration = "";
};
};
};
@@ -294,14 +294,20 @@
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_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_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;
@@ -330,7 +336,7 @@
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 3.0;
SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
@@ -345,14 +351,20 @@
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_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_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;
@@ -373,7 +385,7 @@
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SWIFT_VERSION = 3.0;
SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
@@ -400,7 +412,7 @@
PRODUCT_NAME = OpenSourceController;
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 3.0;
SWIFT_VERSION = 4.0;
};
name = Debug;
};
@@ -422,7 +434,7 @@
PRODUCT_NAME = OpenSourceController;
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 3.0;
SWIFT_VERSION = 4.0;
};
name = Release;
};
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0800"
LastUpgradeVersion = "0900"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@@ -26,6 +26,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES"
codeCoverageEnabled = "YES">
<Testables>
@@ -56,6 +57,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0800"
LastUpgradeVersion = "0900"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@@ -26,6 +26,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES"
codeCoverageEnabled = "YES">
<Testables>
@@ -56,6 +57,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0800"
LastUpgradeVersion = "0900"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@@ -26,6 +26,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES"
codeCoverageEnabled = "YES">
<Testables>
@@ -56,6 +57,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0800"
LastUpgradeVersion = "0900"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@@ -26,6 +26,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES"
codeCoverageEnabled = "YES">
<Testables>
@@ -37,6 +38,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
-5
View File
@@ -1,5 +0,0 @@
import PackageDescription
let package = Package(
name: "OpenSourceController"
)
+14 -6
View File
@@ -33,22 +33,30 @@ Display a screen with all licences used in your application can be painful to ma
- [ ] Download licence from Podfile (https://github.com/terflogag/OpenSourceController/issues/1)
- [ ] Download licence from Cartfile (https://github.com/terflogag/OpenSourceController/issues/2)
- [ ] Download licence from local file
- [ ] Carthage support
- [ ] Unit & UI Test
## Requirements
* Xcode 8
* Xcode 9
* iOS 9.0+ target deployment
* Swift 3 project
* Swift 3 or Swift 4 project
## Installation
OpenSourceController is available through [CocoaPods](http://cocoapods.org). To install
it, simply add the following line to your Podfile:
- To integrate OpenSourceController into your Xcode project using [CocoaPods](http://cocoapods.org), specify it in your Podfile :
```ruby
pod "OpenSourceController"
pod "OpenSourceController", '~> 2.0'
pod "OpenSourceController", '~> 1.0.8' # Swift 3.1 version
```
- To integrate OpenSourceController into your Xcode project using [Carthage](https://github.com/Carthage/Carthage), specify it in your Cartfile :
```ruby
github "terflogag/OpenSourceController" ~> 2.0
github "terflogag/OpenSourceController" ~> 1.0.8 # Swift 3.1 version
```
## Usage
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

@@ -6,7 +6,7 @@
import UIKit
public class OpenSourceController: NSObject {
public class OpenSourceController: NSObject {
// Contains list of licence object
open var licences: [LicenceFile]?
@@ -26,9 +26,9 @@ class OpenSourceViewController: UITableViewController {
fileprivate var downloadedLicence: [LicenceFile]? {
didSet {
// Update UI
DispatchQueue.main.async {
self.stopLoading()
self.tableView.reloadData()
DispatchQueue.main.async { [weak self] in
self?.stopLoading()
self?.tableView.reloadData()
}
}
}
@@ -83,7 +83,7 @@ class OpenSourceViewController: UITableViewController {
self.navigationController?.navigationBar.barTintColor = tintColor
}
if let textColor = self.config.uiConfig.titleColor {
let attribut = [NSForegroundColorAttributeName: textColor]
let attribut = [NSAttributedStringKey.foregroundColor: textColor]
self.navigationController?.navigationBar.titleTextAttributes = attribut
}
@@ -102,25 +102,34 @@ class OpenSourceViewController: UITableViewController {
/// Prepare UIActivityIndicatorView and display it at the center of the view
fileprivate func prepareActivityIndicator() {
self.indicator = UIActivityIndicatorView(frame:CGRect(x: 0, y: 0, width: 40, height: 40) )
self.indicator = UIActivityIndicatorView(frame:CGRect(x: 0,
y: 0,
width: 40,
height: 40) )
self.indicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.gray
self.indicator.center = self.view.center
self.indicator.hidesWhenStopped = true
self.indicator.backgroundColor = UIColor.clear
self.indicator.color = UIColor.black
self.view.addSubview(indicator)
}
/// Start loading : start the loader animation
fileprivate func startLoading() {
self.indicator.startAnimating()
self.indicator.backgroundColor = UIColor.clear
self.indicator.color = UIColor.black
self.indicator.isHidden = false
// Disable scroll
self.tableView.isScrollEnabled = false
}
/// Stop loading : stop and hide the loader
fileprivate func stopLoading() {
self.indicator.hidesWhenStopped = true
self.indicator.stopAnimating()
self.indicator.isHidden = true
// Enable scroll
self.tableView.isScrollEnabled = true
}
// MARK: - Table View Data Source
@@ -166,8 +175,8 @@ class OpenSourceViewController: UITableViewController {
/// Dismiss the OpenSourceController
func dismissController() {
DispatchQueue.main.async {
self.dismiss(animated: true, completion: nil)
DispatchQueue.main.async { [weak self] in
self?.dismiss(animated: true, completion: nil)
}
}
}
+2 -2
View File
@@ -29,7 +29,7 @@ public class LicenceFile: NSObject {
public init(title: String, url: String) {
self.title = title
self.url = url
self.detail = NSLocalizedString("Unable to load this licence.",
self.detail = NSLocalizedString("Unable to load this licence file.",
comment: "")
}
@@ -37,7 +37,7 @@ public class LicenceFile: NSObject {
///
/// - Parameter completion: end of download handler
func downloadLicenceDetail(config: OpenSourceControllerConfig,
completion: @escaping (Void) -> Void) {
completion: @escaping () -> Void) {
if let url = URL(string: self.url) {
let task = URLSession.shared.dataTask(with: url) { (data, _, _) in
if let data = data,
+2 -2
View File
@@ -49,8 +49,8 @@ class OpenSourceTableViewCell: UITableViewCell {
func configure(licence: LicenceFile, config: OpenSourceControllerConfig) {
// Build attributed text
let libraryTitleAttribut = [NSFontAttributeName: UIFont.boldSystemFont(ofSize: UIFont.systemFontSize + 2)]
let libraryLicenceAttribut = [NSFontAttributeName: UIFont.systemFont(ofSize: UIFont.systemFontSize)]
let libraryTitleAttribut = [NSAttributedStringKey.font: UIFont.boldSystemFont(ofSize: UIFont.systemFontSize + 2)]
let libraryLicenceAttribut = [NSAttributedStringKey.font: UIFont.systemFont(ofSize: UIFont.systemFontSize)]
let libraryTitle = NSMutableAttributedString(string: licence.title ?? "",
attributes: libraryTitleAttribut)
libraryTitle.append(NSAttributedString(string: "\n\n"))