2012-03-30 7 views
1

私は独自のカスタムUISegmentedControlサブクラスを持っています。ボタンは標準サイズよりも大きいです。各ボタンの幅は100.0ポイントです。UISegmentedControlのボタンのサイズはどこで設定しますか?

@implementation SegmentedControlExplore 

- (id) init 
{ 
    return [super 
     initWithItems:[NSArray arrayWithObjects: 
      @"Uno", 
      @"Dos", 
      nil 
     ] 
    ]; 
} 

- (void) layoutSubviews 
{ 
    for (NSUInteger i = 0; i < self.numberOfSegments; i++) { 
     [self setWidth:100.0 forSegmentAtIndex:i]; 
    } 
    [super layoutSubviews]; 
} 

@end 

コントローラでこれを使用しようとすると、UINavigationBarの中央に配置できませんでした。

SegmentedControl* sc = [[[SegmentedControl alloc] init] autorelease]; 
[self.navigationController.navigationBar addSubview:sc]; 
sc.center = self.navigationController.navigationBar.center; 

右にずれがあります。なぜなら、ボタンのサイズ設定は、実際にはそのcenterプロパティが変更された後に呼び出されるからです。では、ボタンのサイズ設定をどこに移動すればよいのですか?私はinitに移動しようとしましたが、サイズは変更されませんでした。

答えて

0

layoutSubviews機能をこのコードに置き換えてください。

- (void) layoutSubviews { 

    self.frame = CGRectMake(0, 0, self.numberOfSegments*100, 44); 
    self.center = self.superview.center; 

    CGRect frame = self.frame; 

    if (![[UIApplication sharedApplication] isStatusBarHidden]) { 
     self.frame = CGRectMake(frame.origin.x, frame.origin.y-20, frame.size.width, frame.size.height); 
    } 

    for (NSUInteger i = 0; i < self.numberOfSegments; i++) { 
     [self setWidth:100 forSegmentAtIndex:i]; 
    } 

    [super layoutSubviews]; 
}