2012-03-30 60 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; 

它偏右了。原因是因爲按鈕大小設置在其中心屬性被更改後實際上被調用。那麼我應該在哪裏移動我的按鈕大小設置,以便它首先完成?我試着將它移動到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]; 
}