我正试图拖延从tableView中删除customCell。我正在使用UIImageView获取customCell的图像,然后将其拖动到视图周围,但问题是我无法获取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分开。
任何想法如何实现这一目标?
谢谢大家。
答案 0 :(得分: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
答案 1 :(得分:0)
我是通过创建UIView
Category
,向其添加方法,以及当您想要任何类型的视图(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];
这是我的工作,希望它能解决你的问题。