サーチ…


前書き

UIButtonUIControlはタッチイベントを傍受し、タップされたときにターゲットオブジェクトにアクションメッセージを送信します。ボタンのタイトル、イメージ、その他の外観プロパティを設定できます。さらに、ボタンの状態ごとに異なる外観を指定することもできます。

備考

ボタンの種類

ボタンのタイプは、基本的な外観と動作を定義します。ボタンを作成した後は、そのタイプを変更することはできません。最も一般的に使用されるボタンタイプはカスタムタイプとシステムタイプですが、必要に応じて他のタイプを使用します

  • UIButtonTypeCustom

    No button style.
    
  • UIButtonTypeSystem

    A system style button, such as those shown in navigation bars and toolbars.
    
  • UIButtonTypeDetailDisclosure

    A detail disclosure button.
    
  • UIButtonTypeInfoLight

    An information button that has a light background.
    
  • UIButtonTypeInfoDark

    An information button that has a dark background.
    
  • UIButtonTypeContactAdd

    A contact add button.
    

カスタムボタン(カスタムタイプのボタン)を作成する場合、最初にボタンのフレームは(0、0、0、0)に設定されます。インターフェイスにボタンを追加する前に、フレームをより適切な値に更新する必要があります。

UIButtonの作成

UIButtonsはフレームで初期化できます:

迅速

let button = UIButton(frame: CGRect(x: x, y: y, width: width, height: height)

目標C

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x, y, width, height)];

特定のタイプのUIButtonは、次のように作成できます。

迅速

let button = UIButton(type: .Custom) 

目標C

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

typeUIButtonTypeです。

enum UIButtonType : Int {
    case Custom
    case System
    case DetailDisclosure
    case InfoLight
    case InfoDark
    case ContactAdd
    static var RoundedRect: UIButtonType { get }
}

タイトルを設定する

迅速

button.setTitle(titleString, forState: controlState)

目標C

[button setTitle:(NSString *) forState:(UIControlState)];

デフォルトのタイトルを「Hello、World!」に設定するには

迅速

button.setTitle("Hello, World!", forState: .normal)

目標C

[button setTitle:@"Hello, World!" forControlState:UIControlStateNormal];

タイトルカラーを設定する

//Swift
button.setTitleColor(color, forControlState: controlState)

//Objective-C
[button setTitleColor:(nullable UIColor *) forState:(UIControlState)];

タイトルの色を青に設定するには

//Swift
button.setTitleColor(.blue, for: .normal)

//Objective-C
[button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]

コンテンツの横方向の整列

迅速

//Align contents to the left of the frame
button.contentHorizontalAlignment = .left

//Align contents to the right of the frame
button.contentHorizontalAlignment = .right

//Align contents to the center of the frame
button.contentHorizontalAlignment = .center

//Make contents fill the frame
button.contentHorizontalAlignment = .fill

目標C

//Align contents to the left
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

//Align contents to the right
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;

//Align contents to the center
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

//Align contents to fill the frame
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill;

タイトルラベルの取得

基礎となるタイトルラベルが存在する場合は、それを使用して取得できます

迅速

var label: UILabel? = button.titleLabel

目標C

UILabel *label = button.titleLabel;

これは、例えばタイトルラベルのフォントを設定するために使用することができます

迅速

button.titleLabel?.font = UIFont.boldSystemFontOfSize(12)

目標C

button.titleLabel.font = [UIFont boldSystemFontOfSize:12];

UIButtonの無効化

ボタンは

迅速

myButton.isEnabled = false

目標-C:

myButton.enabled = NO;

ボタンが灰色になります:

ここに画像の説明を入力

無効にしたときにボタンの外観を変更したくない場合は、 adjustsImageWhenDisabledfalse / NO設定しfalse

コードを使用してUIButtonにアクションを追加する(プログラムで)

メソッドをボタンに追加するには、まずアクションメソッドを作成します。

目標-C

-(void)someButtonAction:(id)sender {
  // sender is the object that was tapped, in this case its the button.
    NSLog(@"Button is tapped"); 
}

迅速

func someButtonAction() {
    print("Button is tapped")
}

このアクションメソッドをボタンに追加するには、次のコード行を記述する必要があります。

目標C

[yourButtonInstance addTarget:self action:@selector(someButtonAction) forControlEvents:UIControlEventTouchUpInside];

迅速

yourButtonInstance.addTarget(self, action: #selector(someButtonAction), forControlEvents: .TouchUpInside)

ControlEventsパラメータの場合、 ENUM UIControlEventsのすべてのメンバーが有効です。

フォントの設定

迅速

myButton.titleLabel?.font =  UIFont(name: "YourFontName", size: 20)

目標C

myButton.titleLabel.font = [UIFont fontWithName:@"YourFontName" size:20];

メソッドをボタンにアタッチする

メソッドをボタンに追加するには、まずアクションメソッドを作成します。

目標-C

-(void) someButtonAction{
    NSLog(@"Button is tapped");

}

迅速

func someButtonAction() {
        print("Button is tapped")
    }

このアクションメソッドをボタンに追加するには、次のコード行を記述する必要があります。

目標C

[yourButtonInstance addTarget:self action:@selector(someButtonAction) forControlEvents:UIControlEventTouchUpInside];

迅速

yourButtonInstance.addTarget(self, action: #selector(someButtonAction), forControlEvents: .touchUpInside)

ControlEventsでは、 ENUM UIControlEventsのすべてのメンバーが有効です。

テキストとフォントに基づいてUIButtonのサイズを厳密に取得する

そのフォントに基づいてUIButtonのテキストの正確なサイズを取得するには、関数intrinsicContentSize使用します。

迅速

button.intrinsicContentSize.width

目標-C

button.intrinsicContentSize.width;

画像を設定する

迅速

button.setImage(UIImage(named:"test-image"), forState: .normal)

目標C

[self.button setImage:[UIImage imageNamed:@"test-image"] forState:UIControlStateNormal];

複数の制御状態

複数のUIControlStatesイメージを設定することもできます。たとえば、 Selected and Highlightedステートに同じイメージを設定することができます。

迅速

button.setImage(UIImage(named:"test-image"), forState:[.selected, .highlighted])

目標C

[self.button setImage:[UIImage imageNamed:@"test-image"] forState:UIControlStateSelected|UIControlStateHighlighted];


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow