如何在滚动视图中的图像视图的每个图像上添加UIButton? [英] How add a UIButton on every image of image view which is in scroll view?

查看:49
本文介绍了如何在滚动视图中的图像视图的每个图像上添加UIButton?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个iPhone应用程序,其中有多个图像.这些图像将添加到图像视图中.该图像视图添加带有滚动视图的子视图.现在,我想在每个图像上添加一个透明按钮.我怎样才能做到这一点?我在下面显示了我的代码:

i have an iPhone app in which i have several images. These images add in image view. That image view add sub view with scroll view. Now i want to add a transparent button on every image. How can i do that? I have shown my code below:

    - (void)layoutScrollImages{
    UIImageView *view = nil;
    NSArray *subviews = [scrollView1 subviews];

    // reposition all image subviews in a horizontal serial fashion
    CGFloat curXLoc = 0;
    for (view in subviews)
    {
        if ([view isKindOfClass:[UIImageView class]] && view.tag > 0)
        {
            CGRect frame = view.frame;
            frame.origin = CGPointMake(curXLoc, 0);
            view.frame = frame;

            curXLoc += (kScrollWidth);
        }
    }

    // set the content size so it can be scrollable
    [scrollView1 setContentSize:CGSizeMake((kNoImages * 500), 700)];
}





    - (void)viewDidLoad{
    self.view.backgroundColor = [UIColor viewFlipsideBackgroundColor];

    // 1. setup the scrollview for multiple images and add it to the view controller
    //
    // note: the following can be done in Interface Builder, but we show this in code for clarity
    [scrollView1 setBackgroundColor:[UIColor blackColor]];
    [scrollView1 setCanCancelContentTouches:NO];
    scrollView1.indicatorStyle = UIScrollViewIndicatorStyleWhite;
    scrollView1.clipsToBounds = YES;        // default is NO, we want to restrict drawing within our scrollview
    scrollView1.scrollEnabled = YES;

    //imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image0.jpg"]];
    [scrollView1 addSubview:imageView];
    [scrollView1 setContentSize:CGSizeMake(500,700)];
    scrollView1.minimumZoomScale = 1;
    scrollView1.maximumZoomScale = 3;
    scrollView1.delegate = self;
    [scrollView1 setScrollEnabled:YES];

    // pagingEnabled property default is NO, if set the scroller will stop or snap at each photo
    // if you want free-flowing scroll, don't set this property.
    scrollView1.pagingEnabled = YES;

    // load all the images from our bundle and add them to the scroll view
    NSUInteger i;
    for (i = 1; i <= kNoImages; i++)
    {
        NSString *imageName = [NSString stringWithFormat:@"page-%d.jpg", i];
        UIImage *image = [UIImage imageNamed:imageName];
        UIImageView *ImageView = [[UIImageView alloc] initWithImage:image];

        // setup each frame to a default height and width, it will be properly placed when we call "updateScrollList" 
        CGRect rect = ImageView.frame;
        rect.size.height = kScrollHeight;
        rect.size.width = kScrollWidth;
        ImageView.frame = rect;
        ImageView.tag = i;    // tag our images for later use when we place them in serial fashion
        UIButton *btnView2= [UIButton buttonWithType:UIButtonTypeCustom];
        [btnView2 setTitle:@"view" forState:UIControlStateNormal];
        [btnView2 addTarget:self action:@selector(View:)forControlEvents:UIControlEventTouchDown];
        [btnView2 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        btnView2.frame=CGRectMake(0,0,460,460 );
        [scrollView1 addSubview:btnView2];

     scrollView1.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;

        [scrollView1 addSubview:ImageView];

        [ImageView release];
    }

    [self layoutScrollImages];    // now place the photos in serial layout within the scrollview
}



    -(IBAction)View:(id)sender{

    NSURL *imgUrl=[[NSURL alloc] initWithString:@"http://farm4.static.flickr.com/3567/3523321514_371d9ac42f.jpg"];                 
    NSData *imgData = [NSData dataWithContentsOfURL:imgUrl];
    UIImage *img = [UIImage imageWithData:imgData];
    UIImageView *imgView = [[UIImageView alloc] initWithImage:img];
    [self.view addSubview:imgView];
    //[self.navigationController pushViewController:ivc animated:YES];

    [imgUrl release]; 


}

推荐答案

而不是在Imageview的顶部添加Imageview和透明按钮.您可以只添加UIButton自定义类型并将按钮图像设置为滚动视图中的图像.无需同时使用imageview和UIButton.只需采用UIButton和setImage,就可以了.我尝试从我的应用中为您提供以下示例代码.请根据需要进行修改.我认为这是您所需要的.

Instead of adding Imageview and transparent button on top of Imageview. You can just add UIButton customtype and set button image to your image in your scrollview. There is no need to take imageview and UIButton both. Just take UIButton and setImage and you will be fine. I tried to give you sample code below from my app. Please modify it as per your need. I think it is what you need.

首先将所有常量存储在一个全局文件中.我把它放在en.lproj中.像下面一样.

First of Take all constant in one of global file. I took it in en.lproj. like below.

"TotalThumbnailCount"="6";
"Coloumn"="2";
"ThumbnailHeight"="151";
"ThumbnailWidth"="151";

//Marging between two images

"MarginX" = "6";
"MarginY" = "6";

然后从全局变量初始化所有本地变量.像下面的

Then initialize all your local varaibles from global variables. like below

 -(void)PopulateVariables{
TotalThumbnail = [NSLocalizedString(@"TotalThumbnailCount",nil) intValue];
Colomn = [NSLocalizedString(@"Coloumn",nil) intValue];
ThumbnailHeight = [NSLocalizedString(@"ThumbnailHeight",nil) intValue];
ThumbnailWidth = [NSLocalizedString(@"ThumbnailWidth",nil) intValue];
MarginX = [NSLocalizedString(@"MarginX",nil) intValue];
MarginY= [NSLocalizedString(@"MarginY",nil) intValue];
}

现在,您应该使用以下功能中的UIButton来启动缩略图.

Now, you should initiate your thumbnail images using UIButton from below function.

-(void)PopulateThumbnails
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
XCordinate=MarginX;
YCordinate = MarginY;file:
for(int i=1; i <=TotalThumbnail;i++){
    UIButton *btnMenu = [UIButton buttonWithType:UIButtonTypeCustom];
    //NSData *data =UIImageJPEGRepresentation(, 1);
    [btnMenu setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d.png",i]] forState:UIControlStateNormal];
    CGRect frame = btnMenu.frame;
    frame.size.width=ThumbnailWidth;
    frame.size.height=ThumbnailHeight;
    frame.origin.x=XCordinate;
    frame.origin.y=YCordinate;
    btnMenu.frame=frame;
    btnMenu.tag=i;
    btnMenu.alpha = 1;
    [btnMenu addTarget:self action:@selector(btnSelected:) forControlEvents:UIControlEventTouchUpInside];
    [scrollView addSubview:btnMenu];
    XCordinate = btnMenu.frame.origin.x + btnMenu.frame.size.width + MarginX;

    if(i%Colomn==0)
    {
        XPosition = XCordinate;
        YCordinate = btnMenu.frame.origin.y + btnMenu.frame.size.height + MarginY;
        XCordinate = MarginX;
    }
}
[pool release];
}

然后设置您的scrollview contentsize

And then set your scrollview contentsize

scrollView.contentSize = CGSizeMake(XPosition, YCordinate);

在任何图像上轻按一下,它将进入以下事件.

When some one tap on any image it will goes in below event.

-(IBAction)btnSelected:(id)sender{
UIButton *btnSelected = sender;
switch (btnSelected.tag) {
}

让我知道我是否想念任何东西,如果您听不懂..希望能有所帮助.

Let me know if I miss anything and if you don't understand.. Hope this help.

这篇关于如何在滚动视图中的图像视图的每个图像上添加UIButton?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆