Help us understand the problem. What is going on with this article?

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

More than 5 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の設定をしなければいけないので、結局コードで書くことにしました。

hkm
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away