的UISwitch我的設備上:Switch Image with the bottom pixels cut off http://gorgando.com/uiswitch.jpg底部被切斷的設備上,但顯示正常的模擬器
的UISwitch在模擬器上:Good UISwitch http://gorgando.com/uiswitch-good.png
正如你所看到的,底部像素在設備上切斷,但不在模擬器上。我嘗試過所有我能想到的事情,但沒有解決問題。
一些我試過的東西:
- 更改UISwitch的框架的高度
- 改變UICell的高度
- 更改UICell的內容查看的高度
- 添加UISwitch到UICell而不是UICell的內容查看
以下是相關代碼:
這是的UITableViewController的viewDidLoad中:
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
這是我的UISwitch添加到我的tableviewcell:
[[contactedCell contentView] addSubview:self.contactedSwitch];
非常感謝!
[更新]我認爲tableviewcell的可能是問題,所以我將這些UISwitches添加到常規的UIView中,以查看它們的外觀。我有完全相同的問題,他們在模擬器中看起來沒問題,底部在設備中被切碎。太奇怪了!
您不能更改UISwitch的默認大小,因爲它只會忽略您的代碼。您可以嘗試增加單元格大小並將其從邊緣移開。如果仔細觀察,看起來頂部會被模擬器截斷,底部會被夾在設備上。所以無論哪種方式它都會被裁剪掉。 – iwasrobbed 2010-06-24 19:36:00
我只是將開關添加到常規的UIView並得到相同的結果。它們在模擬器中看起來不錯,但底部仍然在設備上被切斷。我猜這消除了UITableViewCell不夠大,因爲這些UISwitch在它們周圍都有足夠的空間。 – Brad 2010-06-24 20:58:46