0

textViews在上面有很多scrollView,每个上面textView都有一个自定义按钮,这样当用户点击textView它时它应该展开,当它点击返回时它应该折叠到以前的位置。

我想做的是隐藏smallTextView并显示expandedTextView按下按钮的时间,按下按钮时我想隐藏expandedtextViewn 显示smallTextView。但我不知道该怎么做。任何帮助将不胜感激。

这是我的代码:

-

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

            self.title = @"Demo";
            appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
            for (int i=0;i<[appDelegate.serverResponseArray count];i++)
            {
            self.expandTextView = [[UITextView alloc] init];
            [self.expandTextView setFrame:CGRectMake(8.0f, i*50.0f+10.0f, 270.0f, 40.0f)];
            [self.expandTextView setBackgroundColor:[UIColor grayColor]];
            [self.expandTextView setFont:[UIFont fontWithName:@"helvetica" size:12]];
            [self.expandTextView setText:@"Welcome!!!"];
            [self.expandTextView setTextColor:[UIColor colorWithRed:255.0f/255.0f green:255.0f/255.0f blue:255.0f/255.0f alpha:1]];
            [self.expandTextView setUserInteractionEnabled:NO];
            [self.scrollView addSubview:self.expandTextView];
            self.expandTextView = nil;

            self.expandButton = [[UIButton alloc]initWithFrame:CGRectMake(8.0f, i*50.0f+1.0f, 270.0f, 60.0f)];
            [self.expandButton setBackgroundColor:[UIColor clearColor]];
            [self.expandButton addTarget:self action:@selector(textButtonClicked:) forControlEvents:UIControlEventTouchUpInside];

self.expandButton.tag = i;
            [self.scrollView addSubview:self.expandButton];

            UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(278.0f, i*50.0f+10.0f, 14.0f, 40.0f)];
            [imageView setBackgroundColor:[UIColor grayColor]];
            [imageView setImage:[UIImage imageNamed:@"arrow.png"]];
            [self.scrollView addSubview:imageView];
            imageView = nil;

        }


        float maxHeight = 0;

            for(UIView *v in [self.scrollView subviews])
            {
                if(v.frame.origin.x + v.frame.size.height > maxHeight)
                    maxHeight = v.frame.origin.x + v.frame.size.height;
            }

            self.scrollView.contentSize = CGSizeMake(_scrollView.frame.size.width, maxHeight+2570);

        }
        -(IBAction)textButtonClicked:(id)sender
        {
             NSLog(@"%@",sender);
        }

在这张图片中,每个 imageView 上面都有一个自定义按钮 以及我如何知道按下了哪个按钮。

4

3 回答 3

0

要知道按下哪个按钮,您必须为您的按钮分配标签值

-(IBAction)textButtonClicked:(id)sender
{
    UIButton *btn=(UIButton*)sender;

    NSLog(@"Tag of button = %d",btn.tag);
}  

我建议您更改现有 imageView 的框架,而不是使用其他图像视图(隐藏和显示)

于 2013-06-19T10:55:40.470 回答
0

首先,我建议您使用UITableView而不是UIImageView然后实现 Expandable 和 Collapsible UITableViewCell

有很多教程可以实现此功能。只需谷歌它,你就会有很多解决方案。

例如:iOS 的可扩展/可折叠表格

查看 Apple 提供的示例代码:Table View Animations and Gestures

于 2013-06-19T10:59:57.500 回答
0

最好的方法是使用 UITableView 并将图像放在 UITableView 的单元格上,并在单击时更改单元格的大小,我给你一个简单的例子来说明如何创建可扩展的 UITableViewCell。

http://www.roostersoftstudios.com/2011/04/14/iphone-uitableview-with-animated-expanding-cells/

于 2013-06-19T11:00:37.557 回答