2012-09-17 76 views
2

我很難描述這個問題,我會使用屏幕截圖。他們都來自我的模擬器,當我在我的iPodTouch4中測試時,它是一樣的。 我有幾個UILabel s,這是圖片中的rects。非常奇怪的事情與UILabel顯示異常

1.Retina display, UILabels

注意有一些rects的權利,這是出乎意料的,因爲我沒有,除了backgoundColor和幀進行編碼的任何額外行爲的黑線。

當我將UILabel更改爲UIView(沒有其他改變),每件事情都變得正常了! Retina display, UIViews

當使用UILabel不是Retina顯示屏,我們可以清楚地看到比一些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使他們看起來不同。

+0

請包括您如何創建這些標籤/視圖,包括確切的位置和大小。 – jrturton

+0

@jrturton我剛剛補充說,thx。 –

回答

0

如果您是通過xib創建的,然後取消勾選陰影框,看看它是否可以幫助你。

+0

我沒有使用xib。我只是將代碼添加到我的問題 –

6

你可以做

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

檢查您是否有只有整數非小數維(42.000或1337.000,而不是42.500或1337.1234)。這可能是您的顯示問題的根源。

+0

其框架是這樣{{40.8571,1},{38.8571,22}},但它將它們轉換爲整數,它們的位置仍然不正確。如果我將UILabel更改爲UIView,雖然框架中沒有任何更改,但它們顯示的方式不同。 –