Ios UISlider移动不平稳和/或重绘速度缓慢
我一直在写一个简单的华氏/摄氏转换器风格的应用程序。它在模拟器中运行良好,但当我在iPhone4上测试应用程序时,当我来回移动滑块时,它的更新速度非常缓慢 我的主视图控制器如下所示(删除了一些垃圾):Ios UISlider移动不平稳和/或重绘速度缓慢,ios,objective-c,uislider,Ios,Objective C,Uislider,我一直在写一个简单的华氏/摄氏转换器风格的应用程序。它在模拟器中运行良好,但当我在iPhone4上测试应用程序时,当我来回移动滑块时,它的更新速度非常缓慢 我的主视图控制器如下所示(删除了一些垃圾): gradeModel是NSMutableArray的一个NSMutableArray,其中包含NSString值。拖动滑块时,应读取阵列中的相应位置。然后应将其值设置为UILabels 我认为这应该是最简单的事情。UISlider的出口和操作已在情节提要中拖动 编辑:另外,当我在手机上运行应用程序
gradeModel
是NSMutableArray
的一个NSMutableArray
,其中包含NSString
值。拖动滑块时,应读取阵列中的相应位置。然后应将其值设置为UILabels
我认为这应该是最简单的事情。UISlider的出口和操作已在情节提要中拖动
编辑:另外,当我在手机上运行应用程序时,日志显示已使用滑块输入,但窗口不会以“可以这么说”的速度更新。例如,我将滑块从左向右移动,事件会显示在日志中,但标签会以0.5秒的延迟重新绘制
编辑:[self.view setNeedsDisplay]代码>被添加为强制重新绘制的测试。当该行被注释掉时,程序工作同样糟糕/缓慢
编辑:当我将sliderUpdate更改为:
-(IBAction)sliderUpdate:(UISlider*)sender
{
float sliderValue = [sender value];
int pos = sliderValue*10;
NSString *strFromInt = [NSString stringWithFormat:@"%d",pos];
[self.displayLeft setText:strFromInt];
[self.displayRight setText:strFromInt];
}
-我还没有从UISlider连接所有事件吗?我只将valueChanged设置为我的viewController的sliderInput(称为sliderUpdate)。我的应用程序在iPhone 4上的UISlider也有同样的延迟问题,现在我已经开始瞄准iOS 7了
在iOS 6上,我的滑块在iPhone4上工作得非常好
同样的应用程序在我这里的4s和iPadMini上也能顺利运行
编辑
我刚刚发现,在我的应用程序中,当我为调试而构建和为发布而构建时,iOS 7下iPhone4上的UISlider性能有很大差异
我在滑块中进行了大量的日志记录-使用DLog而不是NSLog-DLog是一个宏,在调试模式下运行时扩展为NSLog,在发布模式下扩展为no op。因此,似乎是日志记录导致了滞后
检查是否有日志记录,并将其注释掉,或者,如果您使用的是Dlog,请尝试将方案更改为release,看看这是否解决了您的问题,看看这是否会产生影响
要更改为发布,请在Xcode菜单中查找产品方案(编辑方案)
让我的世界变得不同
这让我松了一口气 我的应用程序在iPhone4上的UISlider也有同样的延迟问题,现在我已经开始瞄准iOS7了
在iOS 6上,我的滑块在iPhone4上工作得非常好
同样的应用程序在我这里的4s和iPadMini上也能顺利运行
编辑
我刚刚发现,在我的应用程序中,当我为调试而构建和为发布而构建时,iOS 7下iPhone4上的UISlider性能有很大差异
我在滑块中进行了大量的日志记录-使用DLog而不是NSLog-DLog是一个宏,在调试模式下运行时扩展为NSLog,在发布模式下扩展为no op。因此,似乎是日志记录导致了滞后
检查是否有日志记录,并将其注释掉,或者,如果您使用的是Dlog,请尝试将方案更改为release,看看这是否解决了您的问题,看看这是否会产生影响
要更改为发布,请在Xcode菜单中查找产品方案(编辑方案)
让我的世界变得不同
这让我松了一口气 奇怪的是,我在iOS 11中仍然有这个。有人知道为什么会这样吗?奇怪的是我在iOS 11中仍然有这个。有人知道为什么会这样吗?
-(IBAction)sliderUpdate:(UISlider*)sender
{
float sliderValue = [sender value];
int pos = sliderValue*10;
NSString *strFromInt = [NSString stringWithFormat:@"%d",pos];
[self.displayLeft setText:strFromInt];
[self.displayRight setText:strFromInt];
}