【问题标题】:How to Initialize UIImageViews etc. and show them on screen : iPhone如何初始化 UIImageViews 等并在屏幕上显示它们:iPhone
【发布时间】:2012-08-22 13:13:34
【问题描述】:

好的,我是 XCode 和 Objective-C 编程的新手,有一个问题。

我可以使用 Storyboard Builder 中的拖放功能正常添加 UIImageView。然后我可以通过创建与相关 ViewController 的连接在代码中访问它,使用控件拖放,然后我可以创建一个插座。然后在 *.h 文件中使用 @property 行声明它并在 *.m 文件中合成。

但是,如果我有一个更复杂的视图,并且将所有内容拖放到屏幕上需要很长时间,如果我想在执行期间更改对象的位置怎么办?

我已经尝试在 ViewDidLoad 方法中使用它:

NSMutableArray *mutableArray = [NSMutableArray array];
UIImage * pic = [UIImage imageNamed: @"Blue.png"];
for (int x = 0;x<10;x++){
    for (int y =0;y<10;y++){
        UIImageView *imageView = [[UIImageView alloc] initWithImage:pic];
    imageView.frame =CGRectMake(x*23,y*41,32,41);
[mutableArray addObject:imageView];
    }
}

我希望制作一个 UIImageView 网格并将它们保存在 NSMutableArray 中,但屏幕上什么也没有出现。您如何在代码中执行与拖放类似的过程?我意识到我没有合成任何东西,我只声明了一个实例 UIImageView,但我想如果我将声明放在 for 循环中,那么它会抱怨,因为它会创建多个具有相同名称的变量。无论如何使用循环在几行代码中创建大量 UIImageViews 吗?我可能只是编辑用作指针变量标识符的字符串,例如"image1", "image2"..... 但是我不知道如何使用字符串类型的变量作为标识符的名称。

附: - 我搜索了 CGRectMake 程序,参数是(x 坐标、y 坐标、宽度、高度)。

任何帮助将不胜感激:)。

【问题讨论】:

    标签: iphone objective-c xcode uiimageview declaration


    【解决方案1】:

    您需要将它们添加到子视图中。

    [self.view addSubview:imageView];
    

    您可以使用标签来识别个人UIImageView,而不是将它们添加到数组中,这完全取决于您喜欢什么。

    UIImage * pic = [UIImage imageNamed: @"Blue.png"];
    int tagInt=1;
    for (int x = 0;x<10;x++){
        for (int y =0;y<10;y++){
            UIImageView *imageView = [[UIImageView alloc] initWithImage:pic];
            imageView.frame =CGRectMake(x*23,y*41,32,41);
            imageView.tag=tagInt;
            [self.view addSubview:imageView];
            tagInt++;
        }
    }
    

    然后访问个人UIImageView

    UIImageView *imageView = (UIImageView*)[self.view viewWithTag:1];
    

    【讨论】:

    • 那么当一些东西被添加到子视图中时,这与做属性/综合的事情是一样的?我也不知道 UIImageView 和 .tag 属性。我将如何找出一个对象可以拥有的所有属性是什么?
    • 将子视图添加到视图中的不是属性。当您使用IBOutlet 时,这会在界面构建器中创建您的 ui 元素的出口,然后您可以将其连接起来。但这很容易成为 ivar 而不是属性。以上是编码的方式(如果你喜欢的话)。
    • 我建议你研究一下属性,它们一开始可能会让人困惑,但它们非常重要。至于找出对象的所有属性,我建议您阅读使用新对象时的苹果文档,您会在进行过程中发现新事物。
    • 好的,如果我想在声明后更改imageViewers的属性怎么办?我唯一需要识别它们的是标签属性,因为它们都具有相同的标识符(使用您的方法)。例如,我将如何为带有标签 10 的 imageView 执行此操作?类似的东西?:[self.view imageview.tag=10] = [[UIImageView alloc] initWithImage:pic]
    • 好的,我又发现了一个问题。一,如果您使用值为 0 的标签,它似乎不起作用,但这并不重要。真正的问题是我想制作某种类似网格的游戏,并且只有在更改 imageViewer 颜色的方法完成后才会更新屏幕。但是我有一个无限循环的方法,当你按下按钮时它会改变瓷砖的颜色。按钮调用将布尔变量更改为 true 的方法,因此主游戏循环通过不断检查某些变量是否为 true 来知道按下了什么。
    【解决方案2】:

    您将创建的所有 imageView 对象保存在 NSMutableArray 中。您需要将它们添加为视图的子视图(在这种情况下,我假设您的视图是 UIViewController 的视图):

    [self.view addSubview:imageView];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-08
      • 1970-01-01
      • 2016-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多