需要在视图顶部显示转动立方体

时间:2012-05-30 21:35:31

标签: iphone ios user-interface opengl-es

我的应用程序顶部有一个半透明的图像视图,我需要在该视图上显示一个3D立方体(甚至是一个3D外观相似的立方体 - 由3个多边形组成)。登记/> 立方体的每个面都是可触摸的,并且应该在触摸后识别。也就是说,使用它的ID发射一个事件,或者每次发射它自己的事件,这反过来会转动立方体...... 我怎么能做到这一点?

我会尝试想象我的目标:

所以,从这个显示的立方体... enter image description here

触摸红脸后 enter image description here

此代码只显示一个触发事件的简单触摸按钮,这就是我现在所有的

@implementation cubeView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code

        [self setBackgroundColor:[UIColor clearColor]];
        UIImageView *view = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Label.png"]];
        // For RETINA DISPLAY create an image named Label@2x.png and make it twice big in x and in y
        [self addSubview:view];
        UILabel * lbl = [[UILabel alloc] initWithFrame:CGRectMake(20,20,100,30)];
        [lbl setText:@"Hello"];
        [lbl setBackgroundColor:[UIColor clearColor]];
        [self addSubview:lbl];
    }
    return self;
}

视图控制器

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIView *container = [[[UIView alloc] initWithFrame:CGRectMake(100, 0, 400, 200)]  
autorelease];
    [self.view addSubview:container];
    container.alpha = 0.2;
    UIButton *b = [UIButton buttonWithType:UIButtonTypeCustom];
    b.frame = CGRectMake(0, 0, 201, 98);
    cubeView *cb = [[[SS alloc] initWithFrame:CGRectMake(0, 0, 201, 98)] autorelease];
    [b setImage:[self imageWithView:cb] forState:UIControlStateNormal];
    [container addSubview:b];
    [b addTarget:self action:@selector(clicked:)forControlEvents:UIControlEventTouchUpInside];



}

1 个答案:

答案 0 :(得分:0)

我不确定你的问题是什么,但是如果你想找到一种旋转立方体的方法,你需要一些指定其边和顶点的坐标。我的项目有一个旋转立方体,它使用旋转矩阵来找到它的最终坐标。你需要以你需要旋转的角度进行旋转。“转动”它,你需要以你喜欢的任何速度/精度步进角度,并在“视图”立方体的连续调用之间保持特定的暂停功能使其逐渐旋转。使用'patch'命令显示多维数据集在matlab中工作。可能在ios dev中有一些类似的功能。