Search code examples
iphoneiosuiscrollviewuibuttoniboutlet

UIScrollView covers UIButton


I have created a UIScrollView and am now trying to place a UIButton over the scroll view. However when I build and run the application the scroll view still works fine but I cannot see the UIButton.

I link the UIButton IBOutlet inside the interface builder.

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
    scrollView.backgroundColor = [UIColor blackColor];
    scrollView.delegate = self;
    scrollView.bounces = NO;

    backgroundImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"auckland-300.jpg"]];

    image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"249a-134206f1d00-1342071f5d9.ImgPlayerAUCKLAND.png"]];

    // Note here you should size the container view appropriately and layout backgroundImage and image accordingly.
    containerView = [[UIView alloc] initWithFrame:CGRectMake(0,0,601,601)];
    playButton = [[UIButton alloc] init]; //test button cannot see it.
    [containerView addSubview:backgroundImage];
    [containerView addSubview:image];

    scrollView.contentSize = containerView.frame.size;
    [scrollView addSubview:containerView];

    scrollView.minimumZoomScale = 0.5;
    scrollView.maximumZoomScale = 31.0;
    [scrollView setZoomScale:scrollView.minimumZoomScale];
    self.view = scrollView;    
}

Any help would be appreciated


Solution

  • Everything seems ok. But I think the reason you are not able to see the button playButton is because you are not adding it to the view itself.

    Dont you need to do this ? [containerView addSubview:playButton];

    To help you out, here's what I do for debugging -

    UIView implements a useful description method. In addition, it implements a recursiveDescription method that you can call to get a summary of an entire view hierarchy.

    NSLog(@"%@", [controller.view recursiveDescription]);