CocoaPods trunk is moving to be read-only. Read more on the blog, there are 18 months to go.

TWKit 0.0.8

TWKit 0.0.8

TestsTested
LangLanguage SwiftSwift
License MIT
ReleasedLast Release Sep 2016
SPMSupports SPM

Maintained by taewan0530.



TWKit 0.0.8

  • By
  • taewan

TWKit

Installation

TWKit is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'TWKit'

OR

pod 'TWKit/EasyStyle'
pod 'TWKit/GetConstraint'
pod 'TWKit/AttributedString'
pod 'TWKit/KeyboardHelper'
pod 'TWKit/ObjectPool'
pod 'TWKit/StructObject'
pod 'TWKit/Extension'
pod 'TWKit/Function'

EasyStyle

뷰에 디자인만 적용하기 위해 IBOutlet으로 코드와 연결하는것을 피하고 손쉽게 뷰에 스타일을 적용 하기위해서\n ‘MGEStyles'를 swift로 바꾸고 동시에 여러 스타일을 적용할 수 있도록 개발.

let manger = EasyStyleManager.sharedInstance
manger.registerStyle("sample") { view in
    if let label = view as? UILabel {
        label.backgroundColor = UIColor.blueColor()
    }
}

manger.registerStyle("test") { view in
    if let label = view as? UILabel {
        label.textColor = UIColor.cyanColor()
    }
}

Applying Styles

By Interface Builder

인터페이스 빌더를 사용하면 IBOutlet을 사용할 필요가 없어서 좋다 :)

By Code

view.easyStyle = "test, sample"

Result

GetConstraint

뷰와 코드를 IBOutlet으로 연결되어 많은 변수가 참조되는 것이 싫어서 개발 Left, Right 와 Leading, Trailing 다르다는것을 유의하고 사용

let topConstraint = view.getConstraint(attribute: .Top)
topConstraint?.constant = 20

AttributedString

NSAttributedString에 쉽게 스타일을 적용할 수 있도록 개발

let text = "Label {sample} test message {icon} sample message {icon} Label"
let attributeString: NSAttributedString = text.toAttributedString([
    "Lab": [NSForegroundColorAttributeName : UIColor.brownColor()],
    "a": [NSBackgroundColorAttributeName : UIColor.purpleColor()],
    "{sample}": [TWKitUIImageAttributeName: UIImage(named: "sample")!],
    "{icon}": [TWKitUIImageAttributeName: UIImage(named: "icon")!]
])
label.attributedText = attributeString

//결과 화면 스샷으로 추가해주자.

KeyboardHelper

스크롤뷰안에 TextField 가 있을때 쉽게 contentInset를 적용

let keyboardHelper = KeyboardHelper(scrollview)

//결과 화면 스샷으로 추가해주자.

ObjectPool

객체 재사용 쉽게 하기위해 개발

let objPool = ObjectPool<UILabel> {
    return UILabel()
}

//객체 생성
for i in 0..<10 {
    let label = objPool.getInstance()    
}

//사용이 끝나면 objPool로 되돌려준다.
for label in objPool.activeList {
    objPool.returnInstance(label)
}

StructObject

performSegueWithIdentifier(identifier: String, sender: AnyObject?)에서 struct를 sender: AnyObject에 넣고 싶을때 사용!

let stObj = StructObject(CGRectMake(0,0,10,10))
let rect = StructObject<CGRect>.from(stObj)
print("StructObject as CGRect is: \(rect)")

Extension

Array사용시에 옵셔널로 쉽게 사용.

let arr = ["test","sample"]

arr[2] //Error
arr[safe: 2] //nil

Author

taewankim, [email protected]

License

MIT

References

Inspired by projects: