OStack程序员社区-中国程序员成长平台

标题: iphone - 如何向一个 UIView 添加多个 UIImageView;从图像列表中 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 00:05
标题: iphone - 如何向一个 UIView 添加多个 UIImageView;从图像列表中

我想在 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];



Best Answer-推荐答案


如果你想做一些更动态的事情,你可以这样做:

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 中,但这又取决于您。我可能倾向于使用 CoreDataSQLiteplist 来存储这个图像数组(或者,更准确地说,存储文件名在那里,并将图像保存在 Documents 文件夹中)。但是使用 NSUserDefaults 需要我们遍历假设的键名,这是脆弱的(例如,如果你有 3 张图像,然后去掉第二张……你要重命名所有的键吗?以避免键名中的空白)。但是,如果您使用 plist 或使用 CoreDataSQLite,则可以遍历图像集合,而不必担心缺少键名。

无论如何,希望这能让您了解如何更动态地检索图像。

关于iphone - 如何向一个 UIView 添加多个 UIImageView;从图像列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14017284/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4