2011-10-08 98 views
36

我已經子類UIView並添加了一個drawRect方法。然後我使用這個自定義類定義一個視圖併爲其添加子視圖。子視圖頂部的drawRect

問題是drawRect似乎在子視圖下繪製東西(因此不可見)。

我想讓drawRect繪製的東西出現在我的自定義UIView的子視圖上方。

這可能嗎?

+0

請舉個例子(可能是圖片?)你想要達到的目標。這聽起來像你想先畫出子視圖的內容,然後再畫出「背景」,但我無法確定。 – jrturton

+0

偉大的問題,感謝您保持簡潔。 –

回答

28

子視圖將始終繪製在其頂層視圖的頂部。

根據您的具體要求,您可能需要有一個普通的UIView作爲背景/容器視圖,您現有的子視圖在那裏,然後您的自定義視圖作爲另一個子視圖添加到頂部,所以它具有最高的Z順序。

例如,如果您的自定義視圖是應該位於其他所有網格之上的網格疊加層,則這將起作用。自定義視圖必須是非透明的,背景顏色清晰。

9

不,子視圖總是出現在它們的容器上方。當然,沒有什麼能阻止你使子視圖(部分)透明。

如果您想要在上面繪製,請在容器中放置另一個透明子視圖作爲最上面的子視圖,然後在該容器中繪製該視圖。如果您禁用了用戶交互,它不會干擾您的觸摸處理。

+0

另外值得注意的是,在大多數情況下,這種強制重構(對新的UIView或視圖)將有助於可讀性。 +1 –