UIImageView上的交互性

时间:2011-07-27 19:28:48

标签: objective-c ios

我是iPad的iOS应用程序的新手。我已经使用UIImageView成功实现了一本儿童图书应用程序。我还实现了滑动手势来遍历页面。每个页面都作为单个图像加载到UIImageView中,并播放叙述场景的音频。

现在我想为我的网页添加一些互动性。例如,我在UIImageView中加载了一个图像,其中包含少量动物角色和某个特定场景的方言......我希望每当用户点击特定动物时,它应该显示一些动作(可能就像狮子咆哮)我的应用程序应播放包含该动物声音的音频文件...我该如何实现此功能?我需要理解这个概念,以便实现它。我是否应该为所有动物分别设置图像并将它们加载到自己的UIImageView中,并将所有这些UIImageViews放在主(或背景)UIImageView中?如果有人能解释我应该如何实现这些功能的概念,我将不胜感激。

我认为对于动物的触摸,我可以定义一个CGRects列表,它将作为屏幕上每只动物的热点,然后播放触摸动物的声音文件,但我如何动态定义这些热点?因为这些将基于动物在特定页面/图像上的位置在每个页面上。另外,这可能无法帮助我为特定动物实施一些动作/动画。

2 个答案:

答案 0 :(得分:0)

如果动物的图片是独立的,你应该将它们用作UIButtons,并将它们的图片设为“自定义”并选择你的动物图片。

否则可能会在动物的顶部放置一个隐形按钮,然后执行下面的代码,我认为具有正确尺寸的透明度和自定义UIButton的.png应该有效!

要使这些按钮发出声音,请执行以下操作:

-(IBAction)lionRoar {

NSString *path = [[NSBundle mainBundle]
                  pathForResource:@"LionRoar" ofType:@"mp3"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
[theAudio play];


}

希望有所帮助!

答案 1 :(得分:0)

隐形按钮应该有效。使用1像素透明png,然后动态调整按钮大小以适合您想要点击的区域:

        UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
        btn.frame = CGRectMake(7, 5, 73, 30);
        [btn setImage:[UIImage imageNamed:@"btn_pixel.png"] forState:UIControlStateNormal];
        [btn addTarget:self action:@selector(doSomething) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:btn];

(你不需要释放按钮,因为它首先没有分配)

然后,只需创建一个名为“doSomething”的函数,即......执行您想要的操作。在你的例子中,它会播放动物的声音。