我正在UISwitch
中创建TableViewCell
。
在视网膜显示屏上看起来很好。
但是当我在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;
}
答案 0 :(得分:3)
首先,在这种情况下,将开关设置为单元格的accessoryView
会更容易,让它担心定位。
您看到模糊图像的原因是您的开关框架的原点是半像素。您正在设置交换机的center
,因此其来源取决于交换机的大小(已修复,因为UISwitch
始终使用系统定义的大小)。所以说开关的尺寸为79 x 27(标准尺寸),将中心的y坐标设置为20将导致框架原点的y坐标为6.5(20.0 - 27.0 * 0.5)。
答案 1 :(得分:2)
不确定“画得很糟糕的图片”是什么意思。它看起来模糊吗?可能是因为它的框架没有设置为满分。
你的细胞高度是多少?以下行可能导致UISwitch设置为0.5点:
[cellSwitch setCenter:CGPointMake(260.0f, cell.frame.size.height / 2)];
这对Retina来说很好,因为它仍然是一个完整的像素,但在非Retina它是0.5像素(因为点=非Retina上的像素和Retina上的点= 2像素)。