0

我正在尝试从 tableView 拖放 customCell。我正在使用获取 customCell 图像的 UIImageView,然后将其拖到视图周​​围,但问题是我无法获取 customCell 的图像。

CustomCellClass *customCell = [[CustomCellClass alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:[CustomCellClass identifier]];

customCell.textLabel.text = "Dragging cell";
_draggedImageView.image = customCell.imageRepresentation;

但这不起作用,它没有得到任何图像。

我也试过:

 CustomCellClass *customCell = [tableView dequeueReusableCellWithIdentifier:[CustomCellClass identifier] forIndexPath:0];

customCell.textLabel.text = "Dragging cell";
_draggedImageView.image = customCell.imageRepresentation;

这行得通,但有一个问题。由于我正在更改重用 customCell 的文本,它也会在 tableView 中更改。我需要一个 customCell 的副本,这样我才能拥有正确的布局,更改该副本中我想要的内容(在本例中为单元格的 textLabel)并将其添加到要拖动的 imageView 中,并将其与 tableView 的任何 customCell 分开。

任何想法如何实现这一目标?

谢谢你们。

4

2 回答 2

0

我不知道 UIKit 中是否存在 -imageRepresentation。通常要从后备存储创建图像,您应该创建位图上下文,在该上下文中渲染视图并最终获得图像表示。您可以创建如下类别:

#import "UIView+RenderVIew.h"
#import <QuartzCore/QuartzCore.h>

@implementation UIView (RenderView)

- (UIImage *) imageByRenderingViewOpaque:(BOOL) yesOrNO {
    UIGraphicsBeginImageContextWithOptions(self.bounds.size, yesOrNO, 0);
    [self.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return resultingImage;
}
- (UIImage *) imageByRenderingView{
    return [self imageByRenderingViewOpaque:NO];
}

@end
于 2013-06-07T08:59:00.657 回答
0

我创建了一个UIView Category,添加了一个方法,当你想要任何类型的 view( CustomCell) 的图像时调用这个函数,它将返回那个特定视图的图像。

@implementation UIView (UIViewCategory)

- (UIImage*)convertInImage {

    UIGraphicsBeginImageContext(self.bounds.size);
    [self.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}
@end

如何使用:

UIImage *cellImage = [yourCustomCellObj convertInImage];

它在我的情况下工作,希望它能解决你的问题。

于 2013-06-07T09:31:31.477 回答