我有自己的自定义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,但尺寸没有改变。
答案 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];
}