セグメント化されたコントロールがあり、最初と最後のアイテムの幅を指定したい (たとえば、他のアイテムより幅が広い)。IsetWidth:forSegmentAtIndex:
が標準スタイルの segmentedControl (つまり[[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 を初めて使用するので、何か不足している可能性があります...
助けていただけますか?