Swift転職なら=>【LevTech】
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

HOME > UIControl

UIControl

App開発には避けられないボタン等のコントロール群。それらを管理するUIControlクラスの説明をします。コントロールに プログラム上からイベントを送信させる処理も合わせて解説いたします。

UIControl説明画像

UIControlのクラス階層とコントロール群


NSObject

UIResponder

UIView

UIControl

ーUIButton
ーUIDatePicker
ーUIPageControl
ーUIRefreshControl
ーUISegmentedControl
ーUISlider
ーUIStepper
ーUISwitch
ーUITextField


参考:UIKit Framework Reference UIControl Class Reference
参考:How To Make a Custom Control in Swift
参考:How to generate a button event in Swift?
参考:HOW TO BUILD A CUSTOM CONTROL IN IOS
参考:What is the difference between beginTrackingWithTouch and touchesBegan?
参考:Invoke target action in Swift

主なプロパティやメソッドの紹介

プロパティ
プロパティ名/型 説明
contentVerticalAlignment アライメント(縦揃え)を設定する
 UIControlContentVerticalAlignment.Top:上寄せ(初期設定)
 UIControlContentVerticalAlignment.Center:中央寄せ
 UIControlContentVerticalAlignment.Bottom:下寄せ
 UIControlContentVerticalAlignment.Fill:縦いっぱい
contentHorizontalAlignment アライメント(横揃え)を設定する
 UIControlContentHorizontalAlignment.Left:左寄せ(初期設定)
 UIControlContentHorizontalAlignment.Center:中央寄せ
 UIControlContentHorizontalAlignment.Right:左寄せ
 UIControlContentHorizontalAlignment.Fill:横いっぱい
state 選択されているかの取得。
 UIControlState.Normal;通常(初期状態)
 UIControlState.Disabled;無効時
 UIControlState.Selected:選択時
 UIControlState.Highlighted:ハイライト時
...
selected 選択状態かどうか。
stateのプロパティがUIControlState.Selectedかどうか
enabled 有効状態かどうか。
stateのプロパティがUIControlState.Disabledかどうか
その他 Appleの公式ページを参照してください。
UIKit Framework Reference UIControl Class Reference
メソッド
メソッド名 説明
addTarget イベントをコントロールに登録する。例えばButtonコントロールにクリックイベントを追加する等。
例)button.addTarget(self, action: "btn_click:", forControlEvents:.TouchUpInside);
removeTarget イベントをコントロールから解除する。例えばButtonコントロールのタッチイベントを解放させる
例)button.removeTarget(self, action: "btn_click:", forControlEvents:.TouchUpInside);
sendAction コントロールをクリックしないでアクションを実行させる。Objective-CのperformSelectorと同じ
例)button.sendAction(Selector("btn_click:"), to: self, forEvent: nil);
その他 Appleの公式ページを参照してください。
UIKit Framework Reference UIControl Class Reference

コントロールのアクションをプログラムから実行する

sendAction(performSelector)はサンプルがあった方が分かりやすいのでコード共有。

sendActionを利用する場合


    var button = UIButton(frame: CGRectMake(0, 0, 100, 50));
    button.backgroundColor = UIColor(red: 0.0, green: 1.0, blue: 0.0, alpha: 1.0);
    button.addTarget(self, action: "btn_click:", forControlEvents:.TouchUpInside);
    button.setTitle("Test", forState: UIControlState.Normal);
    self.view.addSubview(button);
        
    //以下一行実行でbtn_clickが送信されます
    button.sendAction(Selector("btn_click:"), to: self, forEvent: nil);

    //ボタンがクリックされると呼ばれます
    func btn_click(sender: UIButton){
        println("button is clcked!")
    }

NSThread.detachNewThreadSelectorを利用する場合


    var button = UIButton(frame: CGRectMake(0, 0, 100, 50));
    button.backgroundColor = UIColor(red: 0.0, green: 1.0, blue: 0.0, alpha: 1.0);
    button.addTarget(self, action: "btn_click:", forControlEvents:.TouchUpInside);
    button.setTitle("Test", forState: UIControlState.Normal);
    self.view.addSubview(button);
        
    //以下実行で同じことを処理できます。delayの数値を調整して待機後の実行も可能。以下は1.0秒待機してから実行
    let delay = 1.0 * Double(NSEC_PER_SEC)
    var time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
    dispatch_after(time, dispatch_get_main_queue(), {
       NSThread.detachNewThreadSelector(Selector("btn_click:"), toTarget:self, withObject: "button")
    })

    //ボタンがクリックされると呼ばれます
    func btn_click(sender: UIButton){
        println("button is clcked!")
    }

NSThreadの方が使い勝手が良さそうな気もします。

↓こんな記事もありますよ!

のんでいるくすり: 3.11震災時の体験から開発されたお薬アプリ。無料

今日は薬を便利にかつ守秘的にメモできるアプリのんでいる薬をご紹介します。 実はアプリレビューは初めて。 SwiftサラリーマンのFBページを経由して開発者でもあり薬剤師のBlueRoy(ブルーロワ・インク) Inc. のShige様とお知り合いになる事ができて、是非レビューさせて下さいと私からお願いした経緯で今回レビュー記事に繋がりました。 Shige様、快く了承頂き本当にありがとうございました!

UIStepper

さて今回は基本のコンポーネントの一つStepper(メモリを少しずつ+とーで上下させるコントロール)を説明します。 単純なコントロールですのが、初期設定で、+と-が表示される優れものです。ただ、単調な為に記事にするのが面白くないので、 何度も申し訳ありませんが「ヒゲ」にフォーカスして、ヒゲを剃るStepper(ヒゲの量を調整する)を作成して説明してみます。

AppleWatchとiPhone連携をナターシャさんのデモを参考に調査

先日Swiftサラリーマンに関してTwitterでつぶやいてくださっていたまっちょさん に教えていただいたAppleWatchアプリ作成に関する海外のWatchKitのナターシャさんの記事(Architecting Your App for the Apple Watch)を教えていただきました、 動画やプレゼンもあり英語でしたがサンプルコードも付いていて分かりやすかったです!
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!