Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使父UIView显示在其上方';UIImageView子视图_C#_Objective C_Ios_Uiview_Xamarin.ios - Fatal编程技术网

C# 如何使父UIView显示在其上方';UIImageView子视图

C# 如何使父UIView显示在其上方';UIImageView子视图,c#,objective-c,ios,uiview,xamarin.ios,C#,Objective C,Ios,Uiview,Xamarin.ios,我有一个扩展UIView的类,它有一个UIImageView,在构建UIView时作为子视图添加。如果我不添加UIImageView,或者如果我将其不透明设置为false,将BackgroundColor设置为Clear并将图像设置为null(aka nil),我将重写Draw方法(aka drawRect)并在当前CGContext上进行绘制。一旦我将UIImageView的BackgroundColor设置为真实颜色,或者我将UIImageView上的图像设置为null以外的其他值,我绘制的

我有一个扩展UIView的类,它有一个UIImageView,在构建UIView时作为子视图添加。如果我不添加UIImageView,或者如果我将其不透明设置为false,将BackgroundColor设置为Clear并将图像设置为null(aka nil),我将重写Draw方法(aka drawRect)并在当前CGContext上进行绘制。一旦我将UIImageView的BackgroundColor设置为真实颜色,或者我将UIImageView上的图像设置为null以外的其他值,我绘制的所有内容都将在UIImageView下绘制

这似乎很奇怪,如果我在父视图的上下文中绘制,它应该出现在任何子视图的上方。然而,这一堆似乎与人们的想法相反。似乎可以预期,最高层始终是父层,所有子视图都按照添加顺序添加到较低层。事实似乎并非如此

我尝试将子视图发送到前面和后面,但它没有改变任何东西

基本上,如果我的父视图不透明为false,并且它的背景色是清晰的,我希望我在其绘制方法中在其上下文上绘制的任何形状或线条都显示在它可能具有的任何子视图的顶部

如何在父视图上绘制,并在下面显示正在绘制的子视图

苹果网站上是否有任何文档解释父视图及其子视图的Z顺序


C#或Objective-C中的示例很好。

您看到的行为是正确的!在
UIKit
中,视图在
drawRect
中绘制自身,然后框架处理在其上绘制其所有子视图的操作

由于苹果公司已经对z顺序进行了某种硬编码,所以实际上没有办法改变这一点。但这确实有道理。例如,如果我有一个背景图像,并且我想向其中添加一个人,我会执行
[backgroundView addSubview:personView]
,并且我希望该个人视图将绘制在
backgroundView
的顶部

如果要在图像上绘制,请在其他视图中绘制,并将其添加到顶部:

[mainView addSubview:myImageView]
[mainView addSubview:myCustomOverlayView]

你是说我不应该在superview上画图,而是在superview的另一个子视图上画图,而这个另一个子视图应该在我添加UIImageView之后添加?六羟甲基三聚氰胺六甲醚。。在我看来,这似乎是倒退,但苹果的许多产品有时都是好的我会给它一个机会让你知道好或坏很快。谢谢。果然,它很有魅力,再次感谢你提供的信息和帮助。