菜鸟教程小白 发表于 2022-12-13 00:05:40

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


                                            <p><p>我想在 <code>UIView</code> 中添加多个 <code>UIImageView</code>。 </p>

<p>我正在构建一个 View ,然后成功保存到库中。我从相机或库中添加一张图片作为背景,然后在其上添加多张图片;来自 <code>TableListController</code>。
在 <code>viewDidLoad</code> 我为每个可用图像编写每个 <code>UIImageView</code> ;并且 View 只出现在用户从 <code>TableListController</code> 挑选的图像上。</p>

<p>这是一个有限的解决方案。当用户选择相同的图像时;图像被覆盖。我希望能够在 View 上复制图像。</p>

<p>我想为用户选择的每个图像编写一个 <code>UIImageView</code> 并让它们留在 View 上。</p>

<p>如何在<code>UIView</code>中添加多个<code>UIImageViews</code>;从 <code>TableListController</code> 中挑选的图像?</p>

<p>这就是我现在所拥有的。我需要一个更动态的解决方案。</p>

<pre><code>CGRect myFrame = CGRectMake(0,-20,320,480);
self.createView = [ initWithFrame:myFrame];
self.createView.backgroundColor = ;
;

self.bgImgView = [ initWithImage:image];
self.bgImgView.frame = CGRectMake(0,0,320,480);
;


NSData *imageDataz = [ objectForKey:@&#34;catzero-item-0&#34;];
UIImage *myPickZero = ;
UIImageView *test0 = [ initWithImage:(UIImage *)myPickZero];
test0.frame = CGRectMake(0,0,320,480);
;

NSData *imageDatao = [ objectForKey:@&#34;catzero-item-1&#34;];
UIImage *myPickOne = ;
UIImageView *test1 = [ initWithImage:(UIImage *)myPickOne];
test1.frame = CGRectMake(0,0,320,480);
;
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>如果你想做一些更动态的事情,你可以这样做:</p>

<pre><code>CGRect frame = self.view.bounds; // probably better to get the parent&#39;s bounds, rather than hardcoding frame dimensions

CGRect myFrame = frame;
myFrame.origin.y -= 20; // I&#39;m not sure why you&#39;re offsetting this by 20, but you really do, grab the superview&#39;s bounds and offset it
self.createView = [ initWithFrame:myFrame];
self.createView.backgroundColor = ;
;

self.bgImgView = [ initWithImage:image];
self.bgImgView.frame = frame;
;

self.imageViews = [ init];
NSUserDefaults *userDefaults = ;
NSInteger i = 0;
NSData *data;

while ((data = ]) != nil)
{
    UIImage *image = ;
    UIImageView *imageView = [ initWithImage:image];
    imageView.frame = frame;
    ;
    ;
}
</code></pre>

<p>这将读取以 <code>@"catzero-item-"</code> 为前缀的键的图像并为它们创建 ImageView 。我还将单独的 <code>UIImageView</code> 引用保存到我创建的 <code>NSMutableArray</code> 属性 <code>imageViews</code> 中。是否这样做取决于您。</p>

<p>话虽如此,您的部分代码我不太明白:例如,每个 <code>UIImageView</code> 都有相同的框架...我不知道您为什么要创建图像会被彼此遮挡的 View ,但这取决于您。</p>

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

<p>无论如何,希望这能让您了解如何更动态地检索图像。</p></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - 如何向一个 UIView 添加多个 UIImageView;从图像列表中,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/14017284/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/14017284/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - 如何向一个 UIView 添加多个 UIImageView;从图像列表中