2

我很难描述这个问题,我将使用屏幕截图。它们都来自我的模拟器,当我在我的模拟器中测试时iPodTouch4,它是一样的。我有几个UILabels,它们是图片中的矩形。

1.Retina显示,UILabels

请注意,某些矩形的右侧有黑线,这是出乎意料的,因为除了背景颜色和框架之外,我没有编写任何额外的行为。

当我更改UILabelUIView(没有其他更改)时,一切都变得正常! 视网膜显示,UIViews

并且当UILabel不用于视网膜显示器时,我们可以清楚地看到一些矩形具有不同的宽度,但根据我的代码和日志,它们具有相同的宽度!真的很奇怪! 没有视网膜显示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 即可使它们看起来不同。

4

2 回答 2

6

你能做一个

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

?

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

于 2012-09-17T07:25:41.050 回答
0

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

于 2012-09-17T06:21:51.910 回答