11

現在、3 つの個別のセグメントを持つ小さなセグメント化されたコントロールがあります。

私がやりたいことは、選択された場合、その特定のセグメントの画像を別の画像に変更することです。

これまでのところ、私はそれを私が望むものと非常によく似たものにすることができました。選択すると新しい画像が表示されますが、新しい画像の小さな部分が青いハイライトで覆われています(以下を参照)。 、私はそれを取り除くことができません:

何らかの理由で、強調表示が画像の一部を上書きしています。

選択したときにセグメント化されたコントロールの強調表示/変更を完全に無効にする方法、または私の質問を達成するその他のオプションを知りたいです。

私がこれまでに試したこと:

私のコード(ご覧のとおり、選択したボタンの1つの画像をテストするだけです):

-(IBAction)languageChanged:(UISegmentedControl *)sender {
    UISegmentedControl *segmentControl = [[UISegmentedControl alloc] init];
    [segmentControl addTarget:self action:@selector(segmentedControlValueChanged:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:segmentControl];

    [sender setImage:[UIImage imageNamed:@"rsz_langue-francais-on.png"] forSegmentAtIndex:sender.selectedSegmentIndex];     
}
4

2 に答える 2

4

これが機能するかどうかは100%わかりませんが、セグメントの色はによって決定されtintColorます。

だからあなたは単に設定tintColorすることができます[UIColor clearColor];

編集:

iOS6以降の問題だと読みました。この問題を修正するには、セグメント化されたコントロール全体ではなく、個々のセクションの幅を設定します。

UISegmentedControl幅が180のaの(テストされていない)コードの例を次に示します。

float version = [[[UIDevice currentDevice] systemVersion] floatValue];
if (version >= 6.0) {
    [[UISegmentedControl appearance] setWidth:90 forSegmentAtIndex:0];
    [[UISegmentedControl appearance] setWidth:90 forSegmentAtIndex:1];
}
else{
    segmentedControl.frame = CGRectMake(0, 0, 180, 30);
}

編集2:

スタイルが「プレーン」ではなく「バー」に設定されている場合にのみ、セグメントコントロールの色合いの色を変更できました。アプリ内の色の一貫性が損なわれるとすぐに、この変更を実際に増やします。

一時的で汚い修正は、瞬間的な状態をYESにチェックすることである可能性があります。これにより、ほんの一瞬青くなり、カスタム画像でも選択されたように見えます。

于 2013-02-11T10:52:52.943 に答える
2

最終的に、私が修正できた唯一の方法 (回避したほうがよいかもしれません) は、スタイルをuisegmentedcontrol' Plain ' から ' Bar ' に変更することでした。パトリックは上で提案しました。これは iOS6 の既知のバグであると聞いており、すぐに修正されることを願っています。

于 2013-02-15T09:32:10.090 に答える