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の方が使い勝手が良さそうな気もします。

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

アイコン一括作成サービス紹介

アプリのアイコンを作るのは手間で面倒くさい。と、思いながらPhotoshopで一つ一つサイズを変えて作っていたのですが、 簡単につくれるサービスやっぱりありました。Macのスクリプトだったり、Webサービスだったりと揃っていましたので共有します。

Facebook SDKを試してみる(調査)

先日ひょんなところからFacebookSDKの事を教えていただき、興味が足裏からフツフツと湧き出てまいりましたので本日調査してみます。

willsetとdidsetでプロパティを監視。意味あるのか???

クラスのプロパティにはWillsetとdidsetという監視用の関数があると聞いたのですが、用途は分かるにしても メリットとしてはどういうものなのかなと、うーん、と考えていました。調べていると海外のサイトでは同じように疑問にもつ質問があがっていました。 getとsetで同じことができるのでは?との私と同じスタンスです。解決されていましたので、順に説明していきます。
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!