开发者

Changing the content of the UIScrollView iPhone

I am trying to create a scrollable menu bar (which I am succeeding in doing) but now instead I want to add a large button with an image centred in the button, instead of taking up the total width and height of the button

THis is my current code:

[scrollView setBackgroundColor:[UIColor whiteColor]];

[scrollView setCanCancelContentTouches:NO];

scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;

scrollView.clipsToBounds = YES;

scrollView.scrollEnabled = YES;

UIImage *image;

UIImageView *iv;

UIButton *button;

count = [returned count];

for (int i=0; i<count; i++)

{

image = [UIImage imageNamed:@"coat2.jpg"];

iv = [[UIImageView al开发者_Go百科loc] initWithFrame:CGRectMake(0,0,105,120)];

button = [[UIButton alloc] initWithFrame:CGRectMake(0,0,105,120)];

[button setAlpha:100];

[button setTag:1];

[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];

iv.image = image;

iv.tag=@"coat2.jpg";

iv.userInteractionEnabled = YES;

[iv insertSubview:button atIndex:0];

[button release];

[scrollView addSubview:iv];

[iv release];

}

[scrollView setScrollEnabled:YES];

[self layoutScrollImages];

scrollView.delegate = self;

the above code creates an image and button over it where the button and image are of the exact same width and height. I want the button to be significantly larger both in height and width.

Is this possible?

Thanks!

2nd attempt (using help from Joseph Tura)

[scrollView setBackgroundColor:[UIColor whiteColor]];

    [scrollView setCanCancelContentTouches:NO];

    scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;

    scrollView.clipsToBounds = YES;

    scrollView.scrollEnabled = YES;

    UIImage *image;

    count = [returned count];

    for (int i=0; i<count; i++)

    {
    image = [UIImage imageNamed:@"coat2.jpg"];
                iv = [[UIImageView alloc] initWithFrame:CGRectMake(0,20,105,120)];

        button = [[ProductButton alloc] initWithFrame:CGRectMake(0,20,105,120)];

        [button setAlpha:100];
        [button setTag:1];
        [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];

        iv.tag=tag;
        iv.userInteractionEnabled = YES;
        iv.image = myimage;

        UIView *uiView = [[UIView alloc] initWithFrame:CGRectMake(0,20,105,120)];
        [uiView addSubview:iv];
        button = [[ProductButton alloc] initWithFrame:CGRectMake(0,0,210,240)];
        button.center = CGPointMake(uiView.frame.size.width /2, uiView.frame.size.height/2);
        [button setTag:1];

        [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
        [uiView addSubview:button];

        [scrollView addSubview:uiView];
}
                [scrollView setScrollEnabled:YES];

    [self layoutScrollImages];

    scrollView.delegate = self;


-----

-(void)layoutScrollImages
{
    //UIImageView *view = nil;
    UIView *view = nil;
    NSArray *subviews = [scrollView subviews];
    CGFloat curXLoc = 0;
    for (view in subviews)
    {
        if ([view isKindOfClass:[UIView class]] && view.tag > 0)
        {
            CGRect frame = view.frame;
            frame.origin = CGPointMake(curXLoc, 0);
            view.frame = frame;

            curXLoc += 110;
        }
    }
    [scrollView setContentSize: CGSizeMake(count*110, [scrollView bounds].size.height)];
}


Why not put both elements inside a UIView?

UIView *aView = [[UIView alloc] initWithFrame:iv.frame];

[aView addSubview:iv];

button = [[UIButton alloc] initWithFrame:CGRectMake(0,0,210,240)];
button.center = CGPointMake(aView.frame.size.width / 2, aView.frame.size.height / 2);
[aView addSubview:button];
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜