我在java平台上开发了游戏动物园管理员。现在我需要让它在 ios 上运行,但是我不熟悉 xcode 和 objc。UIView
我在使用and时遇到了一些问题UIImageview
。假设我们有 5 种类型的 8*8 图标(图像),我们更改两个相邻图标,并且每当 3 个或更多图标在水平或垂直线上相同时,它们将被消除并创建新图标以替换以前的位置。要在java中实现它,我只需要检查条件并删除那些消除的图标并绘制新的图标(全部根据坐标)然后重新绘制JPanel。但是我将如何在 ios 中实现它?不是说消除过程,我什至不知道如何对齐UIView
. 起初我想可能UIImageview
在一个背景上使用然后 addSubviewUIView
. 但是如果这样的话,会有64个子视图,那就一团糟了。我对 xcode 和 objc 很陌生,我只有 2 周的时间来完成这项任务。有人可以帮我解决我的问题吗?非常感谢!!
2 回答
从我收集到的信息来看,在 Java 中,您只是在 JPanels 的paintComponent 中绘制了图标?
好吧,在这种情况下,您可以完全模拟。在屏幕上放置一个 uiview,用作您的 JPanel/绘图画布。在 drawRect 中进行绘图的方式与在 java 中相同
@interface CustomView : UIView @end
@implementation CustomView
- (void)drawRect:(CGRect)dirtyRect {
[[UIColor redColor] set];
for(int ix = 0; ix < ITEMS_PER_ROW; ix++ ) {
for(int iy = 0; iy < ITEMS_PER_COLUMN; iy++) {
//draw item at ix and iy
CGPoint pt = CGPointMake();
CGRect r = CGRectMake(ix*5;iy*5, 5, 5);
CGRectFill(r);
}
}
}
@end
*内联输入,不保证^^
也就是说,我会选择 CALayers
不是绘制它而是使用 64 个子层.. 也许不是 64 个......也许你可以将它分组一点 => 然后你会受益于隐式动画
我只是没有看到混乱。是的,你最终会在你的背景上拥有 64 个子视图UIView
。
如果它对您来说更容易或更合乎逻辑,那么您可以创建和定位UIImageViews
唯一一次,然后只需更改它们的UIImage
. UIImage
保存图标本身的 只是一段UIImageView
时间的属性,它UIImageView
是视图层次结构的一部分,具有坐标和大小或框架等。
如果你真的对 64 个单独的视图对象很感兴趣:根据你的逻辑在 java 端的工作方式,它可能看起来更合乎逻辑,因此你更容易使用核心数据只绘制一个图像。该图像将由 8x8 图标组成,并且会在每次更改时重新绘制。然后,您UIImageView
只需填写所有底层证券UIView
。(严格来说,在这种情况下可能不再需要底层 UIView 了,因为您的UIImageView
coud 充当self.view
视图控制器的对象。但我仍然会选择 UIView 只是为了一致地应用通常的模式。)
但是,如果我是你,我会选择一个“修复”网格UIImageViews
并相应地交换他们的UIImage
对象。