XCODE Objc 以编程方式在 for 中添加 UiimageView

Posted

技术标签:

【中文标题】XCODE Objc 以编程方式在 for 中添加 UiimageView【英文标题】:XCODE Obj-C add UiimageView programatically in a for 【发布时间】:2015-03-13 18:37:09 【问题描述】:

所以我需要使用 for 循环以编程方式添加 3 张图像这是我的代码,这是不正确的,我只是尝试过。

for(int i = 1; i < 4; i++)
        UIImageView *[i] = [[UIImageView alloc] initWithFrame:CGRectMake([i]*50, 50, 250, 250)];

[self.view addSubview:[i]];
    

在哪里 [i];将是 1 、 2 和 3 任何帮助将不胜感激。谢谢

【问题讨论】:

此代码在同一位置创建 3 个 UIImageView。这就是为什么您无法在视图中看到所有三个。 你的构造语法……太可怕了。您需要在输入[i] 的位置使用变量名。如:UIImageView *imageView = ... addSubview:imageView];. 您在在一个语句中 对两个不同的事物使用相同的变量。你到底希望发生什么? 【参考方案1】:

你的语法是错误的。这正是您所需要的。

for (int i=0;i<3;i++)
  UIImageView *image=[[UIImageView alloc] initWithFrame:CGRectMake(i*50, 50, 250, 250)];
  [self.view addSubView:image];

但是,这对您来说没有多大用处,因为您的图像不会从任何地方引用,因此您无法轻松填充或调整它们。

【讨论】:

所有视图都将具有相同的框架 正确,但这不是问题所在,为什么-1?问题中的代码示例显然没用。但是问题是代码不起作用。谁知道图像添加后的计划是什么。 CGRectMake([i]*50, 50, 250, 250) 【参考方案2】:

将变量名称从 [i] 更改为类似 imageToAdd 的名称。

【讨论】:

【参考方案3】:
CGFloat xMarging = 0;
CGFloat imageOriginX = 0;
CGFloat imageOriginY = 0;
CGFloat imageWidth = 250;
CGFloat imageHeight = 250;
NSInteger numerOfImages = 3;
for (NSInteger i = 0; i < numerOfImages; i++)
    [self.view addSubview:[[UIImageView alloc] initWithFrame:CGRectMake(xMarging + i * imageWidth,
                                                                        imageOriginY,
                                                                        imageWidth,
                                                                        imgageHeight)]];

假设您希望它们并排,如 [][][]

【讨论】:

以上是关于XCODE Objc 以编程方式在 for 中添加 UiimageView的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 10 - 以编程方式添加按钮时,滚动视图不允许滚动

以编程方式添加配置文件和证书

Cocoa Xcode:使用 Swift 4 for Mac 以编程方式从 AppDelegate 打开窗口控制器?

XCode:以编程方式添加具有特定名称和动画的多个按钮

以编程方式更新 Xcode 资产目录

Xcode UI 测试找不到以编程方式添加的视图