2011-06-17 22 views
0

我有以下代碼:UIView的組幀古怪

- (id)initWithFrame:(CGRect)frame chapterNum:(int)newChapterNumber pageNum:(int)newPageNumber 
    { 
NSLog (@"Frame:x:%f y:%f width:%f height:%f",frame.origin.x, 
              frame.origin.y, 
              frame.size.width, 
              frame.size.height); 
self = [super initWithFrame:frame]; 
if (self) { 
    NSLog (@"View Frame:x:%f y:%f width:%f height:%f",self.frame.origin.x, 
      self.frame.origin.y, 
      self.frame.size.width, 
      self.frame.size.height); 
    ...... 
    } 

林在模擬器上運行(在橫向模式)當我在控制檯日誌的結果,我看到:

2011-06 -17 09:17:16.428 MyApp [16454:207] Frame:x:0.000000 y:0.000000 width:128.000000 height:96.000000

2011-06-17 09:17:16.433 MyApp [16454:207] x:-64.000000 y:-48.000000寬度:128.000000高度:96.000000

爲什麼視圖框架的原點與im使用的框架不同,值得注意的是該值恰好是大小變量的一半(加上a - 符號)。任何幫助是極大的讚賞 !

回答

2

首先(並且與問題無關,只是樣式問題)使用NSStringFromCGRect而不是自己打印出來。

NSLog(@"frame = %@", NSStringFromCGRect(frame)); 
.... 
if(...) { 
    NSLog(@"self.frame = %@", NSStringFromCGRect(self.frame)); 
} 

你的超類有什麼看法?它是一個通用的UIView還是你的一個製作?在....之前,你的initWithFrame:方法中沒有任何內容嗎?

一半寬度和高度成爲新的起源的意義在於,您的視圖已將它的center移至0,0。不知道爲什麼它會這樣做,因此有關你的超類的問題。

欲瞭解更多信息,請參閱文檔here並查看center財產的文檔。

+0

感謝法案NSStringFromCGRect,對我來說是一個很好的分數!我的觀點是從UIView分類的。我已經閱讀了文檔,但仍然不知道爲什麼我的中心會被移動,但事實上確實發生了...... – rednic 2011-06-17 14:21:40