我想在 UIView
中添加多个 UIImageView
。
我正在构建一个 View ,然后成功保存到库中。我从相机或库中添加一张图片作为背景,然后在其上添加多张图片;来自 TableListController
。
在 viewDidLoad
我为每个可用图像编写每个 UIImageView
;并且 View 只出现在用户从 TableListController
挑选的图像上。
这是一个有限的解决方案。当用户选择相同的图像时;图像被覆盖。我希望能够在 View 上复制图像。
我想为用户选择的每个图像编写一个 UIImageView
并让它们留在 View 上。
如何在UIView
中添加多个UIImageViews
;从 TableListController
中挑选的图像?
这就是我现在所拥有的。我需要一个更动态的解决方案。
CGRect myFrame = CGRectMake(0,-20,320,480);
self.createView = [[UIView alloc] initWithFrame:myFrame];
self.createView.backgroundColor = [UIColor yellowColor];
[self.view addSubview:self.createView];
self.bgImgView = [[UIImageView alloc] initWithImage:image];
self.bgImgView.frame = CGRectMake(0,0,320,480);
[self.createView addSubview:self.bgImgView];
NSData *imageDataz = [[NSUserDefaults standardUserDefaults] objectForKey"catzero-item-0"];
UIImage *myPickZero = [UIImage imageWithData:imageDataz];
UIImageView *test0 = [[UIImageView alloc] initWithImageUIImage *)myPickZero];
test0.frame = CGRectMake(0,0,320,480);
[self.createView addSubview:test0];
NSData *imageDatao = [[NSUserDefaults standardUserDefaults] objectForKey"catzero-item-1"];
UIImage *myPickOne = [UIImage imageWithData:imageDatao];
UIImageView *test1 = [[UIImageView alloc] initWithImageUIImage *)myPickOne];
test1.frame = CGRectMake(0,0,320,480);
[self.createView addSubview:test1];
如果你想做一些更动态的事情,你可以这样做:
CGRect frame = self.view.bounds; // probably better to get the parent's bounds, rather than hardcoding frame dimensions
CGRect myFrame = frame;
myFrame.origin.y -= 20; // I'm not sure why you're offsetting this by 20, but you really do, grab the superview's bounds and offset it
self.createView = [[UIView alloc] initWithFrame:myFrame];
self.createView.backgroundColor = [UIColor yellowColor];
[self.view addSubview:self.createView];
self.bgImgView = [[UIImageView alloc] initWithImage:image];
self.bgImgView.frame = frame;
[self.createView addSubview:self.bgImgView];
self.imageViews = [[NSMutableArray alloc] init];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSInteger i = 0;
NSData *data;
while ((data = [userDefaults objectForKey:[NSString stringWithFormat"catzero-item-%d", i++]]) != nil)
{
UIImage *image = [UIImage imageWithData:data];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.frame = frame;
[self.createView addSubview:imageView];
[self.imageViews addObject:imageView];
}
这将读取以 @"catzero-item-"
为前缀的键的图像并为它们创建 ImageView 。我还将单独的 UIImageView
引用保存到我创建的 NSMutableArray
属性 imageViews
中。是否这样做取决于您。
话虽如此,您的部分代码我不太明白:例如,每个 UIImageView
都有相同的框架...我不知道您为什么要创建图像会被彼此遮挡的 View ,但这取决于您。
我也不倾向于将图像数组存储在 NSUserDefaults
中,但这又取决于您。我可能倾向于使用 CoreData
或 SQLite
或 plist
来存储这个图像数组(或者,更准确地说,存储文件名在那里,并将图像保存在 Documents
文件夹中)。但是使用 NSUserDefaults
需要我们遍历假设的键名,这是脆弱的(例如,如果你有 3 张图像,然后去掉第二张……你要重命名所有的键吗?以避免键名中的空白)。但是,如果您使用 plist
或使用 CoreData
或 SQLite
,则可以遍历图像集合,而不必担心缺少键名。
无论如何,希望这能让您了解如何更动态地检索图像。
关于iphone - 如何向一个 UIView 添加多个 UIImageView;从图像列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14017284/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |