Search code examples
iphoneuibuttonaugmented-reality

Custom uibutton in ARKit programmatically


I am playing around with the ARKit API ...I wanted to add Custom UIButton within the box on the right side which appears on the screen generated by the code below in the app delegate :

#define BOX_WIDTH 350
#define BOX_HEIGHT 150

- (UIView *)viewForCoordinate:(ARCoordinate *)coordinate {

    CGRect theFrame = CGRectMake(0, 0, BOX_WIDTH, BOX_HEIGHT);
    UIView *tempView = [[UIView alloc] initWithFrame:theFrame];

    //tempView.backgroundColor = [UIColor colorWithWhite:.5 alpha:.3];

    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, BOX_WIDTH, 20.0)];
    titleLabel.backgroundColor = [UIColor colorWithWhite:.3 alpha:.8];
    titleLabel.textColor = [UIColor whiteColor];
    titleLabel.textAlignment = UITextAlignmentCenter;
    titleLabel.text = coordinate.title;
    [titleLabel sizeToFit];

    titleLabel.frame = CGRectMake(BOX_WIDTH / 2.0 - titleLabel.frame.size.width / 2.0 - 4.0, 0, titleLabel.frame.size.width + 8.0, titleLabel.frame.size.height + 8.0);

    UIImageView *pointView = [[UIImageView alloc] initWithFrame:CGRectZero];
    pointView.image = [UIImage imageNamed:@"location.png"];
    pointView.frame = CGRectMake((int)(BOX_WIDTH / 2.0 - pointView.image.size.width / 2.0), (int)(BOX_HEIGHT / 2.0 - pointView.image.size.height / 2.0), pointView.image.size.width, pointView.image.size.height);

    [tempView addSubview:titleLabel];
    [tempView addSubview:pointView];

    [titleLabel release];
    [pointView release];

    return [tempView autorelease];
}

How can I pull this off ? Please help !


Solution

  • Here's my code :

    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    button.frame = CGRectMake(190, 430, 110, 30);
    [button setTitle:@"Retour au plan" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(boutonPlan)
     forControlEvents:UIControlEventTouchUpInside];
    
    // Si il peut, on effectue la MAJ de la vue
    ParkingAppDelegate *appDelegate = (ParkingAppDelegate *)[[UIApplication sharedApplication] delegate];
    arvc = [[ARViewController alloc] initWithDelegate:self];
    //add the button to the view
    [arvc.view addSubview:button];
    

    Hope this helps.