• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iphone - 如何向一个 UIView 添加多个 UIImageView;从图像列表中

[复制链接]
菜鸟教程小白 发表于 2022-12-13 00:05:40 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我想在 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap