2012-07-09 132 views
1

我已经实现了异步图像视图,以便在自定义单元格视图中加载图像,但图像在单元格上显示为很小。所以我需要在点击图像视图时显示该图像的放大形式。我怎样才能做到这一点?在iPhone中单击图像视图时放大显示图像

这是我的代码:

if (cell == nil) { 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    //create new cell 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 

    //common settings 
    cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; 
    cell.layer.cornerRadius = 10; 
    cell.layer.masksToBounds = YES; 

    cell.imageView.contentMode = UIViewContentModeScaleAspectFit; 
    cell.imageView.frame = CGRectMake(10.0f, 10.0f, 60.0f, 44.0f); 
    cell.imageView.backgroundColor = [UIColor colorWithRed:73 green:73 blue:73 alpha:1]; 

    cell.imageView.image = [UIImage imageNamed:@"Placeholder.png"]; 
    imgBtn=[cell imageView]; 
    objectAtIndex:indexPath.row]objectForKey:@"Name"]; 
    cell.imageView.imageURL = [NSURL URLWithString:[[detailsList objectAtIndex:indexPath.row]objectForKey:@"image_url"]]; 
} 

我想触摸到细胞内的图像视图放大图像。有任何想法吗?提前致谢。

+0

现在工作吗? – 2012-07-10 09:45:16

+0

@Simha.hb s bose .. :) – 2012-07-10 09:51:19

回答

1

尝试使用一个UIButton:

UIButton * b = [[UIButton alloc] initWithFrame:CGRectMake(0.0f, 0.0f , cell.imageView.frame.size.width, cell.imageView.frame.size.height)]; 
b.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
[b addTarget:self action:@selector(changeSize:) forControlEvents:UIControlEventTouchUpInside]; 
[cell.imageView addSubview:b]; 

-(IBAction)changeSize:(UIButton *)sender 
{ 
    UIImageView * imageView = (UIImageView *)[sender superview]; 
    imageView.frame = //Your larger frame goes here 
} 
+0

我添加了像这样的btn,但它没有调用更改尺寸方法 – 2012-07-09 11:33:49

+0

确保cell.imageView.userInteractionEnabled = YES – llama591 2012-07-09 12:14:41

+0

其工作..但图像显示为在两侧裁剪。 – 2012-07-09 12:36:00

3

可以按如下方式与手势识别添加图像: -

UITapGestureRecognizer *tapped = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)];   
tapped.numberOfTapsRequired = 1; 
[image setUserInteractionEnabled:YES]; 
image.tag = indexPath.row; 
[image addGestureRecognizer:tapped]; 
[cell.contentView addSubview:image]; 

而且你imagetapped功能将是: -

- (void)imageTapped:(UITapGestureRecognizer *)gesture 
{ 
    UIImageView *img = (UIImageView *)[gesture view]; 
    BigimgView.image = img.image 
    [self.view addSubview:BigimgView]; 
    UITableViewCell *cell = [MyTableView cellForRowAtIndexPath:[NSIndexPath indexPathWithIndex:img.tag]]; 

} 

和BigimgView可以IBOutlet中大尺寸的ImageView的。

+0

点击图片视图是不是调用图片点击的方法.wat可能是什么原因? – 2012-07-09 11:49:22

+0

@alpz我修改了我的答案让用户交互启用imageview。 – Dhawal 2012-07-09 15:37:26

+0

,但更大的图像始终显示在相同的位置。我需要在表格视图本身的特定单元格上显示放大的图像。因此,单元格的标识符也是必需的。 – 2012-07-10 04:56:48

1

当您点击imageView时,您想收到一条消息吗? 一个可能的解决方案是创建一个自定义的UITableViewCell,也许在一个自己的xib文件中。

然后你的问题将是使你的自定义UITableViewCell点击UIImageView。 请看看这个问题:here

一个简单的解决方案是使用UIButton,而不是UIImageView。你可以设置一个图像/ backgroundImage到UIButton。

1

在你的自定义单元格添加按钮。

@interface custom : UITableViewCell 
{ 
    UIButton *button1 
} 

然后在xib中添加按钮,然后连接到该按钮。

来到tableview数据源方法。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"CellIdentifier"; 

    // Dequeue or create a cell of the appropriate type. 
    /// UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    custom *cell=(custom *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) 
    { 
     // cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
     NSArray *topView=[[NSBundle mainBundle]loadNibNamed:@"custom" owner:self options:nil]; 

     for(id currentobject in topView) 
     { 
      if ([currentobject isKindOfClass:[UITableViewCell class]]) 
      { 
       cell=(custom *)currentobject; 
       //cell.backgroundView.backgroundColor=[UIColor clearColor]; 

       break; 
      } 
     } 
    } 
    // 0.0f, 0.0f , cell.imageView.frame.size.width,  cell.imageView.frame.size.height 
    [cell.button1 addTarget:self action:@selector(changeSize) forControlEvents:UIControlEventTouchUpInside]; 
} 

现在点击button.it会去那个方法。,。,试试吧。,。,

-(IBAction)changeSize:(UIButton *)sender 
{ 
    UIImageView * imageView = (UIImageView *)[sender superview]; 
    imageView.frame = //Your larger frame goes here 
} 

ü需要给背景图像cell.button1 它可能帮助你。

我在学习,

相关问题