2012-01-18 11 views
3

私はプログラムで追加するUIButtonを持っています。ここに問題はなく、それはすべきであり、よく見える。 しかし、私が電話機を傾けて風景にすると、ボタンが外れてしまい、それをまだ中心にしたいと思っています。プログラムで中心的なUIButton

ポートレート: It's centered here

景観: Not centered here

私は事の束を試してみましたが、それは働くように見えることはできません、自動サイズ変更がしかし、それの世話をするべきであると私には思えます。その場合は動作しません。

- (UIView*)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section 
{ 
    UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 49)]; 

    _notMeButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    UIImage *butImage = [[UIImage imageNamed:@"notme.png"] stretchableImageWithLeftCapWidth:6 topCapHeight:6]; 
    UIImage *butImagePressed = [[UIImage imageNamed:@"KC_notmePressed.png"] stretchableImageWithLeftCapWidth:6 topCapHeight:6]; 
    [_notMeButton setBackgroundImage:butImage forState:UIControlStateNormal]; 
    [_notMeButton setBackgroundImage:butImagePressed forState:UIControlStateHighlighted]; 
    [_notMeButton setTitle:NSLocalizedString(@"Change address", @"KlarnaCheckout") forState:UIControlStateNormal]; 
    [_notMeButton setTitleColor:[UIColor darkGrayColor] forState:UIControlStateNormal]; 
    [_notMeButton setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted]; 
    [_notMeButton setTitleShadowColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
    [_notMeButton.titleLabel setShadowColor:[UIColor whiteColor]]; 
    [_notMeButton.titleLabel setShadowOffset:CGSizeMake(0, 1)]; 
    [_notMeButton.titleLabel setFont:[UIFont systemFontOfSize:14]]; 
    [_notMeButton addTarget:self action:@selector(thisIsNotMe) forControlEvents:UIControlEventTouchUpInside]; 
    [_notMeButton setTag:1]; 
    [_notMeButton sizeToFit]; 
    [_notMeButton setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin]; 
    [_notMeButton setAutoresizingMask:UIViewAutoresizingFlexibleRightMargin]; 
    [_notMeButton setFrame:CGRectMake(10, 10, _notMeButton.frame.size.width+20, _notMeButton.frame.size.height)]; 
    [_notMeButton setCenter:footerView.center]; 

    [footerView addSubview:_notMeButton]; 

    return footerView; 
} 

答えて

6

マスクを自動サイズ変更についてあなたの考えは正しいですが、あなたは間違ってそれを設定している:

[_notMeButton setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin]; 
[_notMeButton setAutoresizingMask:UIViewAutoresizingFlexibleRightMargin]; 

二行目は、あなたが第一で設定したものを上書きします。いくつかのフラグを設定するための正しい方法は次のようになります。私はあなたの質問に答える前に、

[_notMeButton setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin]; 
2

一つのこと:

[_notMeButton setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin]; 
[_notMeButton setAutoresizingMask:UIViewAutoresizingFlexibleRightMargin]; 

番目の文は、最初のものを上書きし、あなたは|オペレータので、両方のサイズ変更マスクを使用する必要があります適用:それがどこにあるビューは、そのサイズを変更したときに

[_notMeButton setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin]; 

要素を維持するには、任意のリサイズマスクを使用しないことを指示する必要があります:

[_notMeButton setAutoresizingMask:UIViewAutoresizingNone]; 

そして、Interface Builderで同等のはこれです:

IB autoresizing mask applier

私はそれが

を役に立てば幸い
関連する問題