2011-04-12 89 views
1

我有一個擴展UIView的類,它有一個UIImageView,當UIView被構造時被添加爲子視圖。如果我不添加UIImageView,或者如果將其設置爲不透明爲false,並將BackgroudColor設置爲Clear並將圖像設置爲null(aka nil),則我重寫Draw方法(又名drawRect)並在當前CGContext上繪製。一旦我將UIImageView的BackgroundColor設置爲真實顏色,或者將UIImageView上的圖像設置爲非空值,我繪製的所有內容都將繪製在UIImageView的下方。如何讓父UIView出現在它的UIImageView子視圖

這似乎很奇怪,如果我繪製父應用程序的上下文應該出現在任何子視圖上方。然而,看起來堆棧與人們的想法是相反的。看起來人們會認爲最高層始終是父級,所有子視圖按照添加順序添加到較低層。這似乎並非如此。

我試着發送子視圖到前面和後面,但它沒有改變任何東西。

基本上,如果我的父視圖不透明是錯誤的,它的背景顏色是清晰的我期望任何形狀或線我畫它的繪製方法上下文顯示ON可能有任何子視圖。

如何在父視圖上繪製並在下面顯示正在繪製的子視圖?

Apple網站上是否有任何文檔解釋父視圖及其子視圖的Z順序?

C#或Objective-C中的例子都很好。

回答

3

您看到的行爲是正確的!在UIKit中,一個視圖在drawRect中繪製自己,然後該框架處理在其頂部繪製其所有子視圖。

由於Apple對z順序進行了硬編碼,所以沒有辦法改變它。但它確實有道理。例如,如果我有一個背景圖像,並且想要添加一個人,我會做[backgroundView addSubview:personView],我期望人物視圖將在backgroundView的頂部繪製。

如果你想畫在你的形象做你的繪圖中有不同的看法,並補充說,在最上面:

[mainView addSubview:myImageView] 
[mainView addSubview:myCustomOverlayView] 
+0

所以你說我不應該對上海華繪製,而是對另一子視圖superview和這個其他子視圖應添加後,我添加UIImageView?嗯..對我來說似乎是倒退,但蘋果有時通常有一個很好的方式。 ;)我會給它一個鏡頭,讓你很快知道好或壞。謝謝。 – 2011-04-12 03:33:39

+0

果然,它像一個魅力,再次感謝信息和幫助。 – 2011-04-12 03:41:35

相關問題