1

で作成しUISwitchていTableViewCellます。

Retina ディスプレイでは問題なく表示されます。

しかし、私が 3GS でプロジェクトを構築しているとき、私のUISwitch絵は下手な絵のように見えます。

http://iwheelbuy.com/stackoverflow/asdf.png

私のコード

{
    ...
    cell.textLabel.text = NSLocalizedString(@"settings model glare", nil);
    UISwitch *cellSwitch = [self switchWithTitle:@"glare"];
    [cellSwitch setCenter:CGPointMake(260.0f, cell.frame.size.height / 2)];
    [cell addSubview:cellSwitch];
    ...
}

- (UISwitch *) switchWithTitle:(NSString *)_title
{
    BOOL switchState;
    if ([[NSUserDefaults standardUserDefaults] boolForKey:_title] == NO)
    {
        [[NSUserDefaults standardUserDefaults] setBool:NO forKey:_title];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }
    switchState = [[NSUserDefaults standardUserDefaults] boolForKey:_title];
    UISwitch *switchForCell = [[UISwitch alloc] initWithFrame:CGRectZero];
    if ([_title isEqualToString:@"glare"])
        [switchForCell addTarget:self action:@selector(changedValueForGlare) forControlEvents:UIControlEventValueChanged];
    else
        [switchForCell addTarget:self action:@selector(changedValueForShadow) forControlEvents:UIControlEventValueChanged];
    [switchForCell setOn:switchState];
    return switchForCell;
}
4

2 に答える 2

3

まず、この場合、スイッチをaccessoryViewセルのとして設定し、位置を気にする方が簡単です。

ぼやけた画像が表示される理由は、スイッチのフレームの原点が0.5ピクセルであるためです。スイッチのを設定しているcenterので、その原点はスイッチのサイズによって異なります(UISwitch常にシステム定義のサイズを使用するため、これは固定されています)。たとえば、スイッチのサイズが79 x 27(標準サイズ)であるとすると、中心のy座標を20に設定すると、フレームの原点のy座標は6.5(20.0〜27.0 * 0.5)になります。

于 2012-11-07T15:23:18.717 に答える
2

「下手な絵」の意味がわからない。ぼやけて見えますか?フレームがフルポイントに設定されていない可能性があります。

あなたのセルの高さは?次の行では、UISwitch が 0.5 ポイントに設定される場合があります。

[cellSwitch setCenter:CGPointMake(260.0f, cell.frame.size.height / 2)];

Retina ではまだフル ピクセルなので問題ありませんが、非 Retina では 0.5 ピクセルです (非 Retina ではポイント = ピクセル、Retina ではポイント = 2 ピクセルであるため)。

于 2012-11-07T14:33:04.877 に答える