Переключатель UIS на моем устройстве: Переключатель изображения с обрезанными нижними пикселями http://gorgando.com/uiswitch.jpg
UISwitch на симуляторе: Good UISwitch http://gorgando.com/uiswitch-good.png
Как видите, нижние пиксели обрезаются на устройстве, а не на симуляторе. Я перепробовал почти все, что мог придумать, но ничто не устранило проблему.
Некоторые вещи, которые я пробовал:
- Изменение высоты рамки UIS-переключателя
- Изменение высоты UICell
- Изменение высоты содержимого UICell
- Добавление UIS-переключателя в UICell, а не в contentView UICell
Вот соответствующий код:
Это в viewDidLoad uiTableViewController:
UISwitch *sw = [[UISwitch alloc] init];
self.contactedSwitch = sw;
[sw release];
self.contactedSwitch = [UISwitch switchWithLeftText:@"YES" andRight:@"NO"];
self.contactedSwitch.center = CGPointMake(230, 22);
self.contactedSwitch.on = [self.contact.contacted boolValue];
Вот откуда происходит метод switchWithLeftText: andRight:
#import "UISwitch-Extended.h"
#define TAG_OFFSET 900
@implementation UISwitch (tagged)
- (void) spelunkAndTag: (UIView *) aView withCount:(int *) count
{
for (UIView *subview in [aView subviews])
{
if ([subview isKindOfClass:[UILabel class]])
{
*count += 1;
[subview setTag:(TAG_OFFSET + *count)];
}
else
[self spelunkAndTag:subview withCount:count];
}
}
- (UILabel *) label1
{
return (UILabel *) [self viewWithTag:TAG_OFFSET + 1];
}
- (UILabel *) label2
{
return (UILabel *) [self viewWithTag:TAG_OFFSET + 2];
}
+ (UISwitch *) switchWithLeftText: (NSString *) tag1 andRight: (NSString *) tag2
{
UISwitch *switchView = [[UISwitch alloc] initWithFrame:CGRectMake(0, 0, 94, 27)];
int labelCount = 0;
[switchView spelunkAndTag:switchView withCount:&labelCount];
if (labelCount == 2)
{
[switchView.label1 setText:tag1];
[switchView.label2 setText:tag2];
}
return [switchView autorelease];
}
@end
Здесь я добавляю переключатель UIS в свою ячейку просмотра таблицы:
[[contactedCell contentView] addSubview:self.contactedSwitch];
Большое спасибо!
[Обновить] Я подумал, что проблема может быть в ящике таблицы, поэтому я добавил эти UIS-переключатели в обычный UIView, чтобы посмотреть, как они выглядят. У меня точно такая же проблема, когда они хорошо выглядят в симуляторе, а нижняя часть устройства обрезана. Так странно!