非常奇怪的东西与UILabel异常显示

时间:2012-09-17 02:57:21

标签: iphone ios

我很难描述问题,我将使用屏幕截图。它们都来自我的模拟器,当我在我的iPodTouch4中测试时,它是相同的。 我有几个UILabel s,它们在图片中显示。

1.Retina display, UILabels

请注意,某些rects右侧有黑线,这是意料之外的,因为除了backgoundColor和frame之外,我没有编写任何额外的行为。

当我将UILabel更改为UIView(没有其他更改)时,每件事情都变得正常! Retina display, UIViews

当使用UILabel不在视网膜显示中时,我们可以清楚地看到一些rects有不同的宽度,但根据我的代码和日志,它们具有相同的宽度!真的很奇怪! no retina display UILabel

我无法弄清楚原因。它可能是关于UILabel的特殊内容,但我在文档中找不到任何内容。

[这是我创建标签的方式]

NSMutableArray *labels = [NSMutableArray array];
for (NSString *day in [self getDaysOfTheWeek]) {
    UILabel *dayOfWeekLabel = [[UILabel alloc] initWithFrame:CGRectZero];
    [labels addObject:dayOfWeekLabel];
} 
self.dayOfWeekLabels = labels;

[这是我设置框架的地方]

int count = 0;
for (UILabel *dayLabel in self.dayOfWeekLabels) {
    dayLabel.frame = CGRectMake(CELL_BORDER_WIDTH + count*(self.cellWidth+CELL_BORDER_WIDTH), CELL_BORDER_WIDTH, self.cellWidth, self.daysHeader.frame.size.height);
    dayLabel.backgroundColor = self.dateBackgroundColor;
    count++;
}

正如我上面提到的,只需在这些代码中将这些UILabel更改为UIView,使它们看起来不同。

2 个答案:

答案 0 :(得分:6)

你能做一个

吗?
dayLabel.autoresizingMask = 0;
dayLabel.frame = [...];
NSLog(@"frame: %@", NSStringFromCGRect(dayLabel.frame));

检查您是否只有整数非小数维(42.000或1337.000,而不是42.500或1337.1234)。这可能是显示问题的根源。

答案 1 :(得分:0)

如果您是通过xib创建,则取消选中启用阴影的框,看看它是否会帮助您。