Slide 1

Slide 1 text

IdentifiableUIKit hanyu 2016.11.25 shinagawa.swift #1

Slide 2

Slide 2 text

Interface Builderʹ΋ͬͱؤுͬͯ΄͍͜͠ͱ ͦͷ̍ ɹؙ֯ʹ͍ͨ͠ ɹυϩοϓγϟυ΢͚͍ͭͨ ɹϘʔμʔ͚͍ͭͨ WJFXMBZFSDPSOFS3BEJVT WJFXMBZFSCPSEFS8JEUI WJFXMBZFSCPSEFS$PMPS 6*$PMPSXIJUF$PMPS $($PMPS WJFXMBZFSTIBEPX0QBDJUZ WJFXMBZFSTIBEPX0⒎TFU $(4J[F XJEUI IFJHIU WJFXMBZFSTIBEPX$PMPS 6*$PMPSCMBDL$PMPS $($PMPS WJFXMBZFSTIBEPX3BEJVT TIBEPX3BEJVT

Slide 3

Slide 3 text

Interface Builderʹ΋ͬͱؤுͬͯ΄͍͜͠ͱ ͦͷ̎ ɹഎܠ৭͸ΞϓϦͷςʔϚΧϥʔͰ 0, ɹ͜͜͸ΞϓϦͷςʔϚΧϥʔͰ ɹ͜͜΋ΞϓϦͷςʔϚΧϥʔͰ … 0, ʜ ɹ͝ΊΜɺςʔϚΧϥʔมߋʹͳͬͨ

Slide 4

Slide 4 text

IdentifiableUIKit •ϏϡʔͷελΠϧΛIDͰࢦఆ •Interface Builder্(=Ϗϧυෆཁ)Ͱଈ࣌൓ө •ελΠϧ͸ࣗ༝ʹఆٛͰ͖Δ

Slide 5

Slide 5 text

DEMO

Slide 6

Slide 6 text

@IBDesignable class IdentifiableView: UIView { @IBInspectable var … ɹoverride drawRect(rect: CGRect) { ɹɹ… ɹ} } Interface Builder্Ͱଈ࣌൓ө →@IBDesignable, @IBInspectableͰ࣮ݱ

Slide 7

Slide 7 text

@IBDesignable class IdentifiableView: UIView { @IBInspectable var backgroundColorKey: String = “" ɹ… ɹoverride drawRect(rect: CGRect) { ɹɹview.backgroundColor = colorStyle.getColor(colorKey: self.backgroundColorKey) ɹɹ… ɹ} } Interface Builder্Ͱଈ࣌൓ө + ϏϡʔͷελΠϧΛIDͰࢦఆ →drawRect()಺Ͱͷ৭΍ελΠϧऔಘΛIDʹΑΓߦ͏

Slide 8

Slide 8 text

protocol ColorIdentifiable { var colorStyle: ColorStyleType.Type? { get } } protocol ColorStyleType { static var colorDic: [String: UIColor] { get } } @IBDesignable class IdentifiableView: UIView, ColorIdentifiable { … } ϏϡʔͷελΠϧΛIDͰࢦఆ →Ϗϡʔʹ(ColorStyleTypeͷม਺Λ௨ͯ͡)ελΠϧͷࣙॻΛ࣋ͨͤΔ

Slide 9

Slide 9 text

class MyColorStyle: NSObject, ColorStyleType { static var colorDic: [String: UIColor] = [ “C01": UIColor.redColor(), … ] } ελΠϧ͸ࣗ༝ʹఆٛͰ͖Δ →IdentifiableViewΛܧঝͨ͠Ϗϡʔʹඥ෇͚ class MyView: IdentifiableView { override var colorStyle: ColorStyleType.Type? { return MyColorStyle.self } } →ColorStyleTypeʹద߹ͨ͠ClassΛఆٛ͠

Slide 10

Slide 10 text

!*#%FTJHOBCMF*EFOUJpBCMF7JFX .Z7JFX .Z$PMPS4UZMF $PMPS4UZMF5ZQF !*#*OTQFDUBCMFCBDLHSPVOE$PMPS,FZ 1: αϒΫϥεΛఆٛ 2: Interface BuilderͰIDΛࢦఆ ֓೦ਤ ݉ ࢖͍ํ .Z7JFX4UZMF 7JFX4UZMF5ZQF

Slide 11

Slide 11 text

IdentifiableUIKit •ϏϡʔͷελΠϧΛIDͰࢦఆ •Interface Builder্(=Ϗϧυෆཁ) Ͱଈ࣌൓ө •ελΠϧ͸ࣗ༝ʹఆٛͰ͖Δ Sorry, it’s for Swift 2.2… • (view.layerͰখࡉ޻͍ͯ͠ΔͨΊɺෳࡶͳϏϡʔͰ͸ॏ͘ͳΔ͔΋…) https://github.com/gaussbeam/IdentifiableUIKit