Edited at

swift2のTextFieldのclearbuttonの色を変更する

More than 3 years have passed since last update.


開発環境


  • xcode7.1

  • swift2.1


はじめに

UITextFieldに文字を入力した時にフォームの右端にあらわれるクリアボタンの色を自由に変更します。

まずは、xcodeプロジェクトを作成。

今回は「clearbtn_sample.xcodeproj」としました。

Main.storyboardを開きTextFieldを追加

 

次にIBOutletの設定。

「clearbtn_sample」という変数で利用します。


viewcontroller.swift

import UIKit

class ViewController: UIViewController{

@IBOutlet weak var clearbtn_sample: UITextField!

override func viewDidLoad() {
super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

}


これではじめの設定は完了。

ちなみにこの状態でiosシュミレーターを起動するとデフォルトはこんな感じですね。


UITextFieldを拡張する


UITextField+ClearButton.swift

import Foundation

import UIKit

// UITextFieldの拡張
// クリアボタンの色を変更
extension UITextField {
func setTintColorToClearButton(){
let anyobj:AnyObject? = self.valueForKey("_clearButton")
if let anyobj:AnyObject = anyobj {
if anyobj.isMemberOfClass(UIButton) {
let button:UIButton = anyobj as! UIButton
if let image:UIImage = button.imageForState(.Highlighted) {
let paintedImage:UIImage = image.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate)
button.setImage(paintedImage, forState: .Normal)
button.setImage(paintedImage, forState: .Highlighted)
}
}
}
}
}


viewcontroller.swiftというファイルと同じ階層にUITextFieldの拡張ファイルUITextField+ClearButton.swiftを作成する。

この拡張ファイルでは新たにsetTintColorToClearButton()という関数を作成しました。

viewcontroller.swiftでsetTintColorToClearButton()を使いたいので、viewcontrollerクラスにUITextFieldDelegateを追加してあげる。

後はviewcontroller.swiftのviewdidload()でsetTintColorToClearButton()関数を呼び出すだけ!


UITextField+ClearButton.swift


import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

@IBOutlet weak var clearbtn_sample: UITextField!

override func viewDidLoad() {
super.viewDidLoad()

//拡張ファイルで作ったsetTintColorToClearButton()関数を呼び出す。
clearbtn_sample.setTintColorToClearButton()

}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

}


設定は以上で完了なのでシュミレーターを起動してみます。



はじめはクリアボタンがグレーだったのに対して、ブルーに変わってます。

ボタンの色の変更はxcode右側のユーティリティバーのTintを変更するだけ!

自由に色を変えられます!




さいごに

HTML、CSSなら簡単に変更できるフォームのカラーリング、

xcodeでやろうとするとこんなにも面倒なんですね笑

こんなに面倒なことしなくても出来るよ!なんて意見があったら教えていただけるとありがたいです笑

まだまだ出来ることはたくさんあるのでおいおい紹介できたらと思います。