3

titleBarにsegmentedControlを備えたアプリがあります。これは、3つのナビゲーションコントローラーを切り替えるために使用されます。新しいappearanceプロキシメソッドを使用して、このsegmentedControlのスタイルを設定しています(以下のコード)。しかし、私には理解できないある種のバグがあるようです。ナビゲーションコントローラーの1つに飛び込んでから、ルートに戻ると表示されます(これにより、セグメント化されたコントロールが再びトップバーに表示されます)。それが起こると、スクリーンショットで見ることができるように、仕切りのグラフィックが台無しになります(最初のものはそれがどのように見えるべきかを示しています)。

誰かが似たようなものに遭遇し、それを修正する方法を知っていますか?

外観を設定するための私のコードは次のとおりです。

  UIImage *segmentSelected            = [[UIImage imageNamed:@"sel"]      resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)];
UIImage *segmentUnselected          = [[UIImage imageNamed:@"uns"]      resizableImageWithCapInsets:UIEdgeInsetsMake(0, 3, 0, 3)];
UIImage *segmentSelectedUnselected  = [[UIImage imageNamed:@"sel-uns"]  resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)];
UIImage *segUnselectedSelected      = [[UIImage imageNamed:@"uns-sel"]  resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)];
UIImage *segmentUnselectedUnselected = [[UIImage imageNamed:@"uns-uns"]  resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)];

[[UISegmentedControl appearanceWhenContainedIn:[UINavigationBar class], nil] 
      setBackgroundImage:segmentUnselected forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearanceWhenContainedIn:[UINavigationBar class], nil] 
      setBackgroundImage:segmentSelected forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearanceWhenContainedIn:[UINavigationBar class], nil] 
      setDividerImage:segmentUnselectedUnselected forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearanceWhenContainedIn:[UINavigationBar class], nil] 
      setDividerImage:segmentSelectedUnselected forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearanceWhenContainedIn:[UINavigationBar class], nil] 
      setDividerImage:segUnselectedSelected forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearanceWhenContainedIn:[UINavigationBar class], nil] 
      setContentPositionAdjustment:UIOffsetMake(8, 0) forSegmentType:UISegmentedControlSegmentLeft barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearanceWhenContainedIn:[UINavigationBar class], nil] 
      setContentPositionAdjustment:UIOffsetMake(-8, 0) forSegmentType:UISegmentedControlSegmentRight barMetrics:UIBarMetricsDefault];

それがどのように見えるべきか:

それがどのように見えるべきか

それはどのようなものか:

ここに画像の説明を入力してください

4

3 に答える 3

0

私は同じ問題を抱えていました。最終的に、幅1pxの分割画像を使用することになりました->その後、問題はなくなりました。

于 2012-05-29T14:45:20.653 に答える
0

外観を介して backgroundImage を使用しましたが、そのアプローチを/ナビゲーションバー全体UINavigatorBarと一緒に使用すると、コンテンツ領域に移動することに気付きました。そのため、濃い青色の境界線が表示され、カスタマイズされたナビゲーション バーが境界線のすぐ下に配置され、非常に奇妙に見えます。UISplitViewControllerUIPopoverController

仕方ありませんが、これは本当のバグでしょうか?!

于 2012-02-23T10:00:55.950 に答える