セグメント化されたコントロールがあり、最初と最後のアイテムを指定された幅(たとえば他のものよりも広い)にします。標準スタイルのsegmentedControl(つまり[[UISegmantedControl appearence] setBackgroundImage:forState:barMetrics:]
が設定されていません)のsetWidth:forSegmentAtIndex:
を使用すると、物事はそのまま動作します。しかし、背景画像を設定すると、セグメントの幅は変わりません。これにより 背景画像が設定されているときにUISegmentedControlセグメントの幅が設定されていません
[[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];
上記のすべてのサイズが正しく設定されているをコメントアウトします。
ここに私の質問です:どのように背景イメージのセグメントのサイズを設定できますか?
私はココアタッチと対物レンズ-cに新しいので、私は何かを逃しているかもしれません...
お願いします。
に基づいて、カスタムコントロールを記述することによって、これを解決し、イゴールをありがとう! しかし、私の質問は、セグメントのサイジングについてでした。 私はカスタムコントロールを書くことでこの問題を解決しました。 – voiger
@voiger、イゴールは正しいです。外観インスタンスではなく実際のインスタンスに背景イメージを設定することにより、個々のセグメントの幅を設定することができます。外観を介して背景画像を適用する場合にのみ、指定された幅が無視されます。これはiOS 6.0で修正されているようですので、現在のところiOS 5.0のみが壊れています。 –