サーチ…
前書き
UIButton : UIControlはタッチイベントを傍受し、タップされたときにターゲットオブジェクトにアクションメッセージを送信します。ボタンのタイトル、イメージ、その他の外観プロパティを設定できます。さらに、ボタンの状態ごとに異なる外観を指定することもできます。
備考
ボタンの種類
ボタンのタイプは、基本的な外観と動作を定義します。ボタンを作成した後は、そのタイプを変更することはできません。最も一般的に使用されるボタンタイプはカスタムタイプとシステムタイプですが、必要に応じて他のタイプを使用します
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];
type
はUIButtonType
です。
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;
ボタンが灰色になります:
無効にしたときにボタンの外観を変更したくない場合は、 adjustsImageWhenDisabled
をfalse
/ 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];