Objective-C中调试应用程序艺术作品的速度减慢



我有一个表视图控制器,特别是在我的应用程序中,它在滚动时会有点抖动。

我很确定这是因为我自定义的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:

中加载它们

最新更新