我能以某种方式以编程方式制作一个ImageView的打印屏幕吗?
假设我正在显示不同尺寸的大照片,自动缩放(AspectFit)到屏幕尺寸,居中和黑色背景。我想拍摄包含黑色imageview背景的缩放图像,以便使用320x480图像。
那么如何将350x600图像更改为320x480并使用黑色边框并且没有任何其他元素(按钮,标签)覆盖此imageview?在Android上我只是捕获屏幕缓冲区,但对于iPhone我真的不知道该怎么做......
提前致谢!
答案 0 :(得分:5)
UIGraphicsBeginImageContext(<specify your size here as CGRect>);
[<yourImageView or view you want to convert in image>.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
输出viewImage
。由于你想要一个黑色边框,所以你可以有这样的逻辑,你将imageView
添加到一个UIView上,blackBackroundColor
为黑色(请记住这个视图的框架应该大于你的imageView的框架,每个边框都有一些边距这样你就可以拥有你的边界了......现在在[<yourView>.layer renderInContext:UIGraphicsGetCurrentContext()];
中使用这种方法。
答案 1 :(得分:1)
UIGraphicsBeginImageContextWithOptions(CGSizeMake(320, 480), NO, 0.0);
CGContextRef context = UIGraphicsGetCurrentContext();
[self.view.layer renderInContext:context];
yourImageViewToStoreCaptured = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
希望这会有所帮助。
答案 2 :(得分:1)
-(IBAction)saveViewToPhotoLibrary:(id)sender
{
CGRect screenRect = [[UIScreen mainScreen] bounds];
UIGraphicsBeginImageContext(screenRect.size);
CGContextRef ctx = UIGraphicsGetCurrentContext();
[[UIColor blackColor] set];
CGContextFillRect(ctx, screenRect);
[self.view.layer renderInContext:ctx];
UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext();
UIImageWriteToSavedPhotosAlbum(screenImage,nil,nil,nil);
//fill cordinat in place of nil if u want only image comes and not button......ok thanks vijay//
UIGraphicsEndImageContext();
}