5

アプリデリゲートのこれらのステートメントを使用して、セグメント化されたコントロールの外観を設定しています。

    [[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時間、利用できない解決策を見つけようとして髪を引っ張ってきました。

4

1 に答える 1