我有一个tableviewcontroller,特别是在我的应用程序中,滚动时会有点紧张。
我相当肯定,因为我的自定义UISegmentedControl外观,我的表中有四个,每个都在自己的单元格中。
我在我的app委托中使用此代码来自定义它们:
[[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次中,我怎样才能让它更快?
答案 0 :(得分:0)
我有一个我正在处理的应用程序,我有一些类似的自定义。我建议重用set控件...你可以通过创建一个UITableViewCell子类并在其中设置seg控件来实现这一点,然后你可以为你需要自定义的东西创建插座。
快速搜索找到了本教程,看起来就像我在说什么
UITableViewCell Prototype Tutorial
这样,您的细胞将完全可重复使用,因此速度更快。
但是,我现在不是您的确切用例,所以这可能不适用于您。它通过自定义按钮,艺术和动画加快了我的细胞。
请记住,alloc inits非常慢。
我想另一个选择是使用控件预先初始化所有你可以将它们存储在和数组中然后只将它们加载到cellForRowAtIndexPath中: