你在哪里设置UISegmentedControl的按钮大小?

时间:2012-03-30 20:51:12

标签: ios cocoa-touch

我有自己的自定义UISegmentedControl子类。它的按钮比标准尺寸大。每个按钮宽100.0分。

@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,但尺寸没有改变。

1 个答案:

答案 0 :(得分: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];
}