我正在开发一款应用程序,让用户可以通过添加帽子,头发,眼睛等物品来打扮。用户基本上从菜单中拖动项目,然后我将图形实例化到屏幕上,其格式为“addSubview: or insertSubview:belowSubview:/aboveSubview:
”。
问题是,有些项目应始终低于其他项目。例如,“眼睛”(蓝色,棕色,绿色)图形应始终出现在“眼球”(各种眼睛形状和表情)之上。但是,我不强迫用户按照任何进程,他们可以随意拖放,所以addSubview:可能不合适,但也许insertSubview:belowSubview:/ aboveSubview:会是,取决于你如何引用要在下方或上方添加的项目。
理想情况下,我会遵循这样的堆栈: 配件>发型>眉毛>眼球>眼睛...等。有没有人有关于如何实现这一点的设计思路?感谢
答案 0 :(得分:1)
使您的视图层次结构如下所示:
self.view
├─ self.accessoriesView
│ ├─ braceletView
│ └─ toeRingView
├─ self.hairStylesView
│ ├─ blondeWigView
│ └─ hairClipView
├─ self.eyebrowsView
│ └─ archedEyebrowView
├─ self.eyeballsView
│ ├─ bloodshotEyeballView
│ └─ regularEyeballView
├─ self.eyesView
│ └─ greenEyesView
├─ etc.
当用户从菜单中拖出发型时,将新发型视图添加为self.hairStylesView
的子视图。当用户从菜单中拖出绿眼睛时,将新眼睛视图添加为self.eyesView
的子视图。
稍后在subviews
数组中的视图“更接近”用户 - 它们会在subviews
数组的前面绘制视图。因此,如果您在代码中创建分组视图,则只需使用addSubview:
,如果按正确的顺序添加它们。或者,如果您在笔尖中设置视图,则可以在笔尖轮廓中按正确顺序放置它们。