【问题标题】:Changing an image from main.m in iOS5/Objective-C在 iOS5/Objective-C 中从 main.m 更改图像
【发布时间】:2012-07-13 05:24:48
【问题描述】:

所以我有一个 iOS5 应用程序(xcode 4.2),我有一个视图控制器,其中 UIImageView 设置为某个图像。我想在 2 秒后将此图像更改为另一张图像。没有用户交互,唯一需要做的就是让图像在 2 秒后发生变化。我找到了关于 dispatch_time 的信息,所以我尝试了一下。

如果你在 main.m 中键入 dispatch_time,它会给你几行代码,你需要插入它在 2 秒后应该做的事情。我的问题:

  1. dispatch_time 代码是否真的要放在 main.m 中?假设此应用程序除了更改 UIImageView 以在 2 秒后显示另一张图像之外什么都不做。

  2. 如何从 main.m 引用 UIImageView?视图控制器.h文件中的声明是这样的:

    @property (weak, noatomic) IBOutlet UIImageView *Image;

【问题讨论】:

    标签: objective-c ios uiimageview iboutlet


    【解决方案1】:

    在您的视图控制器中使用调度代码,可能在viewDidLoad

    - (void)viewDidLoad {
        ...
    
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 2.0 * NSEC_PER_SEC), dispatch_get_current_queue(), ^{
            self.Image.image = [UIImage imageNamed:@"anotherImage.png"];
        });
    }
    

    【讨论】:

    • 这听起来是个好主意。我如何定义 myImage 呢?我正在尝试使用 self.Image.image = @"image2.jpg" 和 ="image2.jpg" 之类的东西,但这不起作用
    • 使用imageNamed:UIImage 函数来做到这一点。我已经编辑了上面的代码以包含一个示例。
    • 太棒了!!!做到了,我看到你已经更新了上面的代码。接受你的回答!
    【解决方案2】:

    不,它不应该进入 main.m。您应该将其放入视图控制器的 init 或 viewDidLoad: 方法中。

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC), dispatch_get_current_queue(), ^{
    

       self.imageView.image = otherImage; });

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-07
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多