我正在创建一个应用程序,用户可以在其中拍摄照片或从相册中选择照片,然后在图像上放置一个叠加层。然后,用户可以缩放,旋转和保存图像。
目前,我有2个xib文件。第一个有缩放图片可供选择的叠加图片。点击其中一个去另一个xib文件,我有2个UIImageViews。一个用于叠加,一个用于相机。以前我只是使用界面构建器在属性上设置图像。但如果有20个叠加,则意味着我必须使用20个xib。所以我认为最好的方法是通过代码添加图片,这样我就可以使用这个第二个xib作为叠加层的模板。这是我被困的时候。当我点击第一个xib文件中的缩略图时,如何告诉第二个xib文件在UIImageView中存储叠加层?
对于相机,我正在使用
imageView.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
它工作正常。我甚至可以将它保存到专辑中。我以为我可以使用下面的代码来覆盖,但这不起作用。
UIImage *image = [UIImage imageNamed: @"char1.png"];
希望有人可以提供帮助。非常感谢。
Hakimo
答案 0 :(得分:2)
在这种情况下,您根本不需要使用xib。手动创建UIImageView,设置其框架和图像,将其作为子视图添加到viewControllers.view。你可以根据需要拥有尽可能多的UIImageViews。制作一个数组。您的案例显然是滥用xibs概念。当需要创建一些复杂的视图时,通常会使用Xib,其中许多子视图不会在代码中使用,例如标签,装饰图像等。
CGRect frameForImage = CGRectMake(100, 100, 200, 300);
UIImageView *originalImage = [[UIImageView alloc] initWithFrame:frameForImage];
originalImage.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
[self.view addSubview:originalImage];
[originalImage release];
frameForImage.origin.x += 400;
UIImageView *resizedImage = [[UIImageView alloc] initWithFrame:frameForImage];
resizedImage.image = [info objectForKey:@"UIImagePickerControllerWhateverImage"];
[self.view addSubview:resizedImage];
[resizedImage release];
答案 1 :(得分:2)
我认为你可以有两个控制器。正如你所说,第一个将是静态的。您可以将第二个控制器声明为带有插座和ivars的类。然后,只要您使用适当的IMageviews(或图像)单击第一个控制器上的两个控件中的任何一个,就可以创建该类的实例。这只是概念。我假设您可以轻松编写代码。