2011-06-02 89 views
1

我目前正在制作一个应用程序,在该应用程序中,用户拍摄照片或从相册中选择照片,然后在图像上放置覆盖图。用户可以缩放,旋转和保存图像。在UIImageView上获取图像

现在,我有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

你是否将图像设置为imageView的图像属性?像这样:imageView.image = image; – dasdom 2011-06-02 09:28:43

+0

是的,我其实。我正在使用imageOverlay.image = [[UIImage imageNamed:@“char1.png”] autorelease];我必须把它放在viewDidLoad函数中。但现在,我遇到的问题是我只能在第二个xib中显示char1。我应该如何在第一个xib中设置其他IBAction按钮来显示不同的图像? – hakimo 2011-06-03 09:56:26

+0

嗨,hakimo,如果您使用'imageNamed:'方法,您不应该释放或自动释放其结果,因为它已经被自动释放。如果过度释放对象,您的应用程序迟早会崩溃。 – Zapko 2011-06-06 11:56:08

回答

2

在这种情况下,您根本不需要使用xib。手动创建UIImageView,设置其框架和图像,将其作为子视图添加到viewControllers.view。您可以根据需要安装尽可能多的UIImageView。制作一组数字。你的情况显然是滥用xibs概念。 Xibs通常使用时,有必要创建有很多的子视图,不会在代码中使用,如标签,装饰图像等

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]; 
+0

非常感谢,我想我会改用这种方法。但是,如果我只用1个xib来加载所有的图像,那不需要更长的时间才能加载? – hakimo 2011-06-06 06:23:58

+0

如果您不一次显示所有图像,则应按需加载它们。释放旧的,不可见的,并加载新的将变得可见。 – Zapko 2011-06-06 11:59:20

2

我认为你可以有两个controllers.As你说一些复杂的视图第一个将是静态的。您可以将第二个控制器声明为带有插座和ivars的类。然后,只要您点击第一个控制器上的两个控件中的任意一个,并使用适当的IMageviews(或图像),就可以创建该类的实例。这只是概念。我假设你可以很容易地编码。

+0

嗨,Mikayil,我不太确定它是否一样,但我已经创建了第二个控制器,像一个班。在第一个xib中,我有2个IBAction按钮。一个显示char1,另一个显示char2。当我按下任何按钮时,我想在第二个xib上显示图像。现在我只能显示一个,但那是因为我在第二个xib上使用了viedDidLoad函数。 – hakimo 2011-06-03 10:00:46

相关问题