0

奇妙なことがあり、それを解決したいと思います。横向きモードのビューがあります。ランドスケープモードのため、フレームを変更する必要があるボタンがあります:

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self 
           action:@selector(aMethod:)
 forControlEvents:UIControlEventTouchDown];
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, 210.0, 40.0, 160.0);
[view addSubview:button];

普通:

button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);

風景:

button.frame = CGRectMake(80.0, 210.0, 40.0, 160.0);

ボタンのタイトル「SHow View」を除いて、すべて問題ありません

「ビューを表示」と言う代わりに、次のように言っています。

w

e

i

V

w

o

h

S

これをボタンからトップまで読んでください :P これは私のボタンのタイトルです。横向きなので、タイトルは縦向きのままです。

どんな助けでも感謝します:)

4

1 に答える 1

0

まず第一に、ボタンの長方形を正しく設定していないようです。3 番目のパラメーターは幅であることを思い出してください。

CG_INLINE CGRect
CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
{
  CGRect rect;
  rect.origin.x = x; rect.origin.y = y;
  rect.size.width = width; rect.size.height = height;
  return rect;
}

button.frame = CGRectMake(80.0, 210.0, 40.0, 160.0);ボタンの幅を40に設定しています。

さらに重要なことは、strings と struts を使用するか、さらには auto レイアウトを使用することです。コンピューターに計算を任せると、生活がとても楽になります。ボタンが 1 つだけの場合は、スプリングとストラットだけで十分ですが、より柔軟なインターフェイスを作成したい場合や、iOS 6 をターゲットにできる場合は、autolayout を使用する必要があります。

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self
           action:@selector(aMethod:)
 forControlEvents:UIControlEventTouchDown];
[button setTitle:@"Show View" forState:UIControlStateNormal];
[button setTranslatesAutoresizingMaskIntoConstraints:NO];

[[self view] addSubview:button];

NSLayoutConstraint *widthConstraint = [NSLayoutConstraint constraintWithItem:button
                                                                     attribute:NSLayoutAttributeWidth
                                                                     relatedBy:NSLayoutRelationGreaterThanOrEqual
                                                                        toItem:nil
                                                                     attribute:NSLayoutAttributeWidth
                                                                    multiplier:1
                                                                      constant:200];

[button addConstraint:widthConstraint];

NSLayoutConstraint *bottomContraint = [NSLayoutConstraint constraintWithItem:button
                                                                     attribute:NSLayoutAttributeBottom
                                                                     relatedBy:NSLayoutRelationEqual
                                                                        toItem:[self view]
                                                                     attribute:NSLayoutAttributeBottom
                                                                    multiplier:1.0
                                                                      constant:-20];
NSLayoutConstraint *centerContraint = [NSLayoutConstraint constraintWithItem:button
                                                                     attribute:NSLayoutAttributeCenterX
                                                                     relatedBy:NSLayoutRelationEqual
                                                                        toItem:[self view]
                                                                     attribute:NSLayoutAttributeCenterX
                                                                    multiplier:1.0
                                                                      constant:0];
NSArray *constraints = [[NSArray alloc] initWithObjects:bottomContraint, centerContraint, nil];
[[self view] addConstraints:constraints];

スプリングとストラットを使用する場合は、自動サイズ変更マスクを設定する必要があります。

[button setAutoresizingMask:(UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin)];

これら 2 つのことは、Interface Builder でははるかに簡単です。

于 2012-10-09T16:51:51.267 に答える