iOS
Swift

iOS Storyboardで枠色つき角丸ボタン

More than 3 years have passed since last update.

角丸で枠に色がついたボタンが好きです。

AppStoreの「入手」みたいなやつ。

今まで、StoryboardでUIButtonをおいてからコードでlayerを設定してあげれば作れるけど、なんかもう少しStoryboardでなんとかなんないのかと思っていたら、"User Defined Runtime Attributes"という設定でできることを知りました。

スクリーンショット 2015-01-21 23.58.50.png

これで実行

スクリーンショット 2015-01-22 0.06.14.png

ぐは。。

そうか、layer.borderColorはCGColorか。。

無理かーと思っていたらナイスな方法が見つかりました。

CALayerのExtension(カテゴリ)でUIColorを引数にもつメソッドを作成してKeyPathに設定します。


CALayer+RuntimeAttribute.swift

import UIKit

extension CALayer {

func setBorderIBColor(color: UIColor!) -> Void{
self.borderColor = color.CGColor
}
}


SwiftでExtensionのファイル名をどうしようかと思いましたが、とりあえずObjective-Cと同じく、クラス名+拡張名でいこうかと思います。

で、このメソッドをKyePathに指定して実行

スクリーンショット 2015-01-21 23.58.50.png

スクリーンショット 2015-01-22 0.13.13.png

よしできた。

追記

UIControlState.Highlightedの設定をしなければいけないので、結局コードで書くことにしました。