【发布时间】:2012-05-14 06:06:25
【问题描述】:
我有一个分段控件,我希望第一个和最后一个项目具有指定的宽度(例如,比其他项目更宽)。当我 setWidth:forSegmentAtIndex: 用于标准样式的分段控制(即 [[UISegmantedControl appearence] setBackgroundImage:forState:barMetrics:] 未设置)时,事情会按应有的方式运行。但是当我设置背景图像时,段宽度不会改变。
这是我的代码:
[[UISegmentedControl appearance] setBackgroundImage:[[UIImage imageNamed:@"btn_normal.png"] stretchableImageWithLeftCapWidth:25 topCapHeight:0] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setBackgroundImage:[[UIImage imageNamed:@"btn_selected.png"] stretchableImageWithLeftCapWidth:25 topCapHeight:0] forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"nn.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"sn.png"] forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"ns.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[self.segmentedControl setContentMode:UIViewContentModeScaleToFill];
[self.segmentedControl setWidth:100.0 forSegmentAtIndex:0];
[self.segmentedControl setWidth:100.0 forSegmentAtIndex:4];
这样,我的所有段都会自动显示为相等的宽度。
当我在上面注释掉所有内容时
[self.segmentedControl setContentMode:UIViewContentModeScaleToFill];
[self.segmentedControl setWidth:100.0 forSegmentAtIndex:0];
[self.segmentedControl setWidth:100.0 forSegmentAtIndex:4];
尺寸设置正确。
这是我的问题:如何为带有背景图像的片段设置大小?
我是 cocoa-touch 和 Objective-c 的新手,所以我可能会遗漏一些东西...
你能帮忙吗?
【问题讨论】:
标签: objective-c ios cocoa-touch ios5 uisegmentedcontrol