2012-03-30 4 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]; 
} 
관련 문제