如何使用UISlider正确创建缩略图选择器以从视频中进行选择?

时间:2012-08-18 22:44:24

标签: objective-c ios uiimageview uislider

嗨这是一个简单的问题,对于一个难题(无论如何对我而言)

我不认为自己是一个初学者程序员,但是对于上帝的爱我似乎无法想出这个...我目前有一个与更新uiimageview有关的问题..它没有被更新时我的滑块向左和向右移动..当我拖动它时,它确实减慢了应用程序的速度,这告诉我有进程发生并且告诉我他们正确地连接了itnerface和他们的方法..什么发生或者我在做什么瞬间试图检索由时间指定的特定帧的图像数据,然后能够根据uislider的位置选择它作为缩略图。所以它是一个手动缩略图选择器。

我已经通过界面构建​​器连接它并以编程方式进行了尝试。

这是我到目前为止所拥有的:

.h file

the dot h file

.m file

the dot m file

the slider method for sliderValueChanged which gets called

slider method

and finally my class method that i use to help retrieve a thumbnail image returning nsdata... passing in a video and a specified time position. 

class methods to retrieve thumbnail

我在这里读过stackoverflow更新uiimageview可能导致内存泄漏,如果它定期更新,因为它缓存图像..并使用[UIImage imageWithData:]代替以避免任何泄漏等所以我已经在我的代码中实现了这一点我的缩略图视图仍然无法根据滑块的位置加载图像。 (创建滑块的最小值和最大值设置为0 - 到视频的持续时间,这样滑块只能有一个可以正确选择视频中时间范围的值)

如果有人能指导我如何解决这个问题......现在已经超出了我好几个小时了!我很感激帮助。谢谢

1 个答案:

答案 0 :(得分:0)

我意识到这里发生了什么...我传递给我的方法的滑块值不适合我所需要的。

在类方法中它表示CMTimeMake(值1,值2)..在做了一些研究后,我明白它是如何工作的。

基本上你在值2中指定的时间间隔在我的情况下它是60 ..基于我复制的一些代码..无论你替换值1 for成为时间间隔的一部分..它们是分子和分母,所以1/60等于1 60秒 2/60等于2 60th of time的时间位置...如果我想要3秒钟我需要做60 * 3 = 180所以

180/60等于180 60秒,相当于总共3秒...所以因为我的滑块值被映射到视频的持续时间,最大值是15秒...我可以在最高的时间范围内使用我在我的问题中写的代码...我只能得到 15 60th of second。哪个时间框架明智不是第一个60秒之间的差异因此我无法看到uimageview被更新...

所以为了纠正这个问题,我将我的滑块值乘以60,这样每个值都会因为它们被映射到秒而发生变化..我乘以60 ..当然图像更新像魅力一样。但是现在我需要弄清楚如何加速这个过程,因为它似乎是同步的,因为它大大滞后于界面