我有一个表视图控制器,特别是在我的应用程序中,它在滚动时会有点抖动。
我很确定这是因为我自定义的UISegmentedControl外观,我的表中有四个,每个都在自己的单元格中。
我在我的应用程序代理中使用此代码来定制它们:
[[UISegmentedControl appearance] setBackgroundImage:[[UIImage imageNamed:@"SegmentedControl.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 4, 0, 4)] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setBackgroundImage:[[UIImage imageNamed:@"SegmentedControlSelected.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 4, 0, 4)] forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"SegmentedControlDivider.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"SegmentedControlSelectedDivider.png"] forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"SegmentedControlSelectedDivider.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor whiteColor], UITextAttributeTextColor,
[UIColor grayColor], UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(0, -1)], UITextAttributeTextShadowOffset,
[UIFont fontWithName:@"Georgia-Italic" size:0.0], UITextAttributeFont,
nil] forState:UIControlStateNormal];
为什么这会导致如此缓慢?我可以做些什么来提高性能?当它们出现在屏幕上时,它会抖动。我以前从未遇到过这样的问题。
我很确定是开关和分段控制,因为当我去掉它们时,它会加速并变得丝滑。我基本上是这样做的:
if (indexPath.row == 0)
{
cell.textLabel.text = @"text";
UISegmentedControl *segControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"1", @"2", nil]];
[segControl setSelectedSegmentIndex:[myBool boolValue]];
[segControl setSegmentedControlStyle:UISegmentedControlStyleBar];
[segControl addTarget:self action:@selector(myMethod:) forControlEvents:UIControlEventValueChanged];
cell.accessoryView = segControl;
}
在我的cellForRowAtIndexPath
7次中,如何使其更快?
我有一个正在开发的应用程序,我有一些类似的自定义。我建议重新使用集合控件。。。您可以通过创建一个UITableViewCell子类并在其中设置seg控件来实现这一点,然后您可以为需要自定义的东西创建出口。
快速搜索找到了这个教程,它看起来就像我所说的
UITableViewCell原型教程
这样,你的细胞将完全可重复使用,因此速度更快。
但是,我现在不知道你的确切用例,所以也许这不适用于你。它通过自定义按钮、艺术和动画大大加快了我的细胞速度。
请记住,分配非常缓慢。
我想另一个选项是预初始化所有控件,也许将它们存储在和数组中,然后只在cellForRowAtIndexPath: