2011-11-28 22 views
0

在水龍頭上,我想讓一些UIImageView對象出現在底層UIView上。 所以我創建了以下動作:新創建的UIImageView在添加爲子視圖時不會顯示

- (IBAction)startStars: (id) sender 
{ 
UIView* that = (UIView*) sender; // an UIButton, invisible, but reacting to Touch Down events 
int tag = that.tag; 

UIView* page = [self getViewByTag:mPages index:tag]; // getting a page currently being viewed 
if (page != nil) 
{ 

    int i; 
    UIImage* image = [UIImage imageNamed:@"some.png"]; 

    for (i = 0 ; i < 10 ; ++i) 
    { 
     // create a new UIImageView at the position of the tapped UIView 
     UIImageView* zap = [[UIImageView alloc] initWithFrame:that.frame]; 
     // assigning the UIImage 
     zap.image = image; 

     // make a modification to the position so we can see all instances 
     CGPoint start = that.layer.frame.origin; 
     start.x += i*20; 
     zap.layer.position = start; 

     [page addSubview:zap]; // add to the UIView 
     [zap setNeedsDisplay]; // please please redraw 
     [zap release];   // release, since page will retain zap 

    } 
    [image release]; 
} 
} 

不幸的是,什麼也沒有顯示出來。代碼被調用,創建的對象,圖像被加載,甚至屬性如預期。 頁面本身是一個真正的基本UIView,使用界面構建器創建以包含其他視圖和控件。

不過,什麼都不由此可以看出....

有沒有人一個想法是什麼,我做錯了什麼?我是否需要設置alpha屬性(或其他)?

感謝

Zuppa

+0

我的第一個想法是你的'getViewByTag:index:'函數出了問題。你可以發佈這個呢? –

+0

確實。情況就是如此。我從來沒有想到這一點.. – Zuppa

回答

1

幾件事情我會檢查:

  • 記錄,以確保實際上是被稱爲這部分代碼。
  • 使用UIImageView指定初始化:

    [[UIImageView alloc] initWithImage:image]; 
    

    這將確保你的新觀點有正確的尺寸圖像 - 什麼是zap和圖像的相對大小?它可能超出框架。

  • 確保圖像實際存在,並創建

  • 儘量不要調整層特性,但設置圖像視圖的center代替。事實上,首先不要調整它,只是看看你是否能看到任何東西。我不確定,但我認爲position可能會在範圍內移動圖層,因此可能會將圖像移出視線。請嘗試:

    CGPoint newCenter = that.frame.origin; 
    newCenter.y += zap.bounds.size.height/2; 
    newCenter.x += i*20; 
    zap.center = origin; 
    
  • setNeedsDisplay不是必需的。很明顯,從你的評論中,這是一種絕望!

+0

愚蠢的我,我加入它的觀點,是目前不可見(我有幾個「頁」,而不是第7頁它是第0頁,仍然你的答案給了我更多的洞察力主題 – Zuppa

0

是你的UIImage無? 您不需要有imageNamed:的.png擴展名即可使用。如果你把它放進去,它可能無法正常工作,我不確定。你也在過度釋放你的形象。 imageNamed:返回一個自動發佈的圖像,所以除非你還在某處調用retain,否則沒有理由在圖像上調用發佈。

0

我看到一個潛在的錯誤:在第二次調用時,您將重新添加另一個副本,因此在添加新副本之前要注意刪除子視圖。餘可以選擇移動前一個視圖。的我的關於與圖像不可見視圖例

99%是錯誤的名稱,所以所建議的,使用負載的臨時VAR:

的UIImage IMG = [UIImage的imageNamed ..]。

and test img。

相關問題