アプリデリゲートのこれらのステートメントを使用して、セグメント化されたコントロールの外観を設定しています。
[[UISegmentedControl appearance] setBackgroundImage:[[UIImage imageNamed:@"segmentation_normal.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0 , 0, 0)] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setBackgroundImage:[[UIImage imageNamed:@"segmentation_selected.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0 , 0, 0)]
forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"segmentation_divider_NormalNormal.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"segmentation_divider_NormalSelected.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"segmentation_divider_SelectedNormal.png"] forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
結果は良好です。いずれかのセグメントを選択すると、背景と仕切りが正しく設定されます(アプリが最初に起動したときに、デフォルトで注文セグメントが選択されています)。以下に示すように、リリースセグメントを選択すると、すべてが正常に見えます。
問題は、ビューを出てからビューに戻ると(選択したインデックスを保存し、それをviewDidLoadに設定してセグメントを再選択する)、不明な理由で分周器が正しく設定されていないことです。
AZをタップしてからリリースすると、自動的に修正されます。このバグは、ビューが最初に読み込まれ、選択されたセグメントがリリースまたはAZのいずれかであった場合にのみ発生します。[順序]が選択されてビューが読み込まれると、仕切りは常に正常に表示されます。
画像サイズ:仕切りの幅は2ピクセル(3つの画像はすべて同じサイズ)、背景の幅はそれぞれ2ピクセルです。
どんなアイデアや指針も高く評価されます。私は過去10時間、利用できない解決策を見つけようとして髪を引っ張ってきました。