我以编程的方式将大约100个UITextFields放到一个UIScrollView中,用于一个精心设计的数据输入应用程序(不要使用ask....bletch),我发现生成所有这些UITextFields花费的时间太长了……大概4秒左右。
有没有更好或者更快的方法来以编程方式创建这么多用户界面对象?
例如,加载一个Xib/Nib并尝试根据需要对其进行修改是否更明智?
谢谢。
发布于 2012-04-29 23:41:46
你有没有想过只创建几个UITextField,一旦它们离开屏幕就重用它们,就像UITableView处理单元格一样?
发布于 2012-04-29 23:45:23
哇,100个文本字段作为数据输入是很苛刻的。但当客户坚持一个非常愚蠢的想法时,我知道问题所在。
回到主题:问题不在于UITextFields的实际生成。这就是可可触摸处理视图的方式。查看速度非常慢。你使用nibs的想法甚至更糟,因为它们实际上更慢。
避免这种情况的唯一方法是简单地不绘制(添加)很多视图。只需添加当前在滚动视图的可见区域中的视图,并删除其他视图。
Cocoa touch实际上已经有了一个非常好的控件,它被称为UITableView。;)
正是由于这些原因,苹果在UITableView中创建了出队/重用模式。
因此,我建议您使用表视图而不是带有自定义单元格的滚动视图(以避免分隔符等)。然后将这些单元格出列/重用,并用存储在某个数组中的UITextFields填充它们。
发布于 2012-04-29 23:37:19
我的第一个想法是编写一个计时器,然后以很小的步长加载它们,这样UI就不会冻结(仍然需要4秒,但至少用户可以在加载的文本字段中输入)
here是如何制作计时器的
https://stackoverflow.com/questions/7140803
复制相似问题