From cebc1bab7ff772185d058b1321e42f4745b560bb Mon Sep 17 00:00:00 2001 From: tasaka-kazunobu Date: Mon, 29 Jun 2015 20:52:24 +0900 Subject: [PATCH] Describe what Misen is and how to use it in README --- README.md | 56 +++++++++++++++++++++++++++++++++++++++ images/asset-catalog.png | Bin 0 -> 25465 bytes 2 files changed, 56 insertions(+) create mode 100644 images/asset-catalog.png diff --git a/README.md b/README.md index 7c2edd1..e0a4349 100644 --- a/README.md +++ b/README.md @@ -1 +1,57 @@ # Misen +Misen is a script to support using Xcode Asset Catalog in Swift. + +# Features +Misen scans sub-directories in the specified Asset Catalog and creates a UIImage extension file which has the following features. +- Application-specific enums which is constructed from Asset Catalog names. +- UIImage non-failable initializer whose argument is an enum value above. + +#### e.g. +Misen creates the UIImage extension file from the asset catalog with 3 image sets below. + + + +``` +extension UIImage { + + convenience init!(assetName: AssetName) { + self.init(named: assetName.rawValue) + } + + enum AssetName: String { + case Camera = "Camera" + case Home = "Home" + case Mail = "Mail" + } +} +``` + +- In your code, you can instantiate images in Asset Catalog as follows. + +``` +let camera = UIImage(assetName: .Camera) +let home = UIImage(assetName: .Home) +let mail = UIImage(assetName: .Mail) +``` + + +# Usage +- Change file permissions first. + +``` +chmod +x misen.swift +``` +- Run the script. + - ```-path``` is a path of the asset catalog. + - ```-exportPath``` is an output UIImage extension file path. + +``` +./misen.swift -path PATH -exportPath OUTPUT_FILE_PATH +``` + +# Requirements +- Xcode 6.3 +- Swift 1.2 + +# License +Misen is released under the MIT license. See LICENSE for details. diff --git a/images/asset-catalog.png b/images/asset-catalog.png new file mode 100644 index 0000000000000000000000000000000000000000..c303aca8083133ffef90d782569047772e246659 GIT binary patch literal 25465 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
HH^- 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 A{Qv*} literal 0 HcmV?d00001