最近涉及到AppleWatch的相关项目,但有个奇怪问题无法解决,而且无法理解:
根据不同的用户操作,需要修改播放器的专辑图片。
不知道跟我的项目需求是不是有关系:我需要轮询共享空间,以拿取同步数据,是否是性能的问题?不晓得
我尝试过的方法如下:
1. WKInterfaceImage继承关系是:-> WKInterfaceObject -> NSObject,无法用UIView的一些方法来移除图片再把新的图片加进去(addSubview,removeFromSuperView)
2. 没有setNeedDisplay等相应的强制刷新方法
3. 只有setHidden方法靠点谱,但尝试后依然无效
4. 我尝试用两张不同的图片来回替换,并调用setHidden方法,依然无效
5. stackoverflow上有个问题是类似的:WKInterfaceTable中的cell里有WKInterfaceImage,在复用旧的cell的时候,发现旧图片内容没有被替换,得到的答案是:这是一个bug,已经在xcode6.2解决(天哪,我的是6.3.2,但依旧没解决啊),给出的临时解决方案是:在赋值新的图片内容之前,先赋值nil。
[self.image setImageNamed:nil]; //也可以是空字符串 [self.image setImageNamed:@"XXXX"];
但~~~我这里依旧无效。
6. 最终解决方案是:在发现需要更新图片的时候,用GCD的延迟方法来执行相关代码。但我不知道是不是由于Watch和iphone之间的同步通信效率低下导致的???
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ });
另外:传说中WKInterfaceDevice可以存储缓存,并且可以通过key值赋值给image对象,但是很遗憾,我这里一旦发现缓存中有图片,再赋值的时候,图片就无法更新了,好奇怪。。。。。欢迎大家一起讨论。
时间: 2024-11-03 22:45:24