请教:反复点击同一个tabbar的item来改变它的图标,出现卡顿

iOS 码拜 9年前 (2015-05-01) 1101次浏览 0个评论
 

如题,点击某个选中的item来更换它的图标,出现图片变换卡顿,而且出现的时间不定,有时是刚运行没多久就开始卡了,有时却是运行很久也不会变慢。。。。。。请各位大神指教啊,本人新手,经验较少。。。

请教:反复点击同一个tabbar的item来改变它的图标,出现卡顿
如果不能在点击产生卡顿时暂时的话(时机不好掌握),就用Time Profile测下:
请教:反复点击同一个tabbar的item来改变它的图标,出现卡顿
请教:反复点击同一个tabbar的item来改变它的图标,出现卡顿
耗时大的代码会很明显的看到
请教:反复点击同一个tabbar的item来改变它的图标,出现卡顿
引用 1 楼 zhangao0086 的回复:

如果不能在点击产生卡顿时暂时的话(时机不好掌握),就用Time Profile测下:
请教:反复点击同一个tabbar的item来改变它的图标,出现卡顿
请教:反复点击同一个tabbar的item来改变它的图标,出现卡顿
耗时大的代码会很明显的看到

恩啊,那个TimerProfiler在6Plus上使用会造成手机重启。。。。。我用预定义的宏测试了,更换tabbar图片的代码片段确实是比其他不需要更换图标的切换时间长,但不是每次都有明显延时,大多数情况下还是很流畅的。不确定是什么原因引起的。ios自带的tabbar难道限制对选定的item进行图片更换操作吗。费解

请教:反复点击同一个tabbar的item来改变它的图标,出现卡顿
把你tagbar相关的代码贴上来
请教:反复点击同一个tabbar的item来改变它的图标,出现卡顿
Quote: 引用 3 楼 zhangao0086 的回复:

把你tagbar相关的代码贴上来[/quote
就是这个方法。。。。
-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
    
    UITabBarItem *telephoneTabBarItem = [self.tabBar.items objectAtIndex:2];
    BOOL clickTag = false;
    //TICK;
    if (item.tag == 2) {
        if (self.count == 1 ) {
            telephoneTabBarItem.title = @”拨号”;
            telephoneTabBarItem.selectedImage = [UIImage imageNamed:@”bohao_down”];
            //show keyboard
           [[NSNotificationCenter defaultCenter]postNotificationName:@”kShowKeyboard” object:nil];
            self.count ++ ;
            clickTag = true;
        }else if (self.count == 0){
           
            telephoneTabBarItem.title = @”拨号”;
            telephoneTabBarItem.selectedImage = [UIImage imageNamed:@”bohao_up”];
             self.count ++ ;
            clickTag = true;
            
        }else if (self.count == 2){
            TICK;
            telephoneTabBarItem.title = @”拨号”;
            telephoneTabBarItem.selectedImage = [UIImage imageNamed:@”bohao_up”];
            //hide keyboard
            [[NSNotificationCenter defaultCenter]postNotificationName:@”kHideKeyboard” object:nil];
            self.count — ;
            clickTag = true;
            TOCK4;
        }
        
        if (clickTag) {
            telephoneTabBarItem.badgeValue = 0;
            [[NSNotificationCenter defaultCenter]postNotificationName:@”kUpdateUnreadNum” object:nil];
        }

    }
    else {
        TICK;
        telephoneTabBarItem.title = @”电话”;
        self.count = 0;
        TOCK3;
    
    }
   
}

请教:反复点击同一个tabbar的item来改变它的图标,出现卡顿
引用 3 楼 zhangao0086 的回复:

把你tagbar相关的代码贴上来

上面的那个方法会在个别情况下导致item的图标更换或者controller切换卡顿吗?

请教:反复点击同一个tabbar的item来改变它的图标,出现卡顿
你的代码要表达的是个什么意思。有没有更优的方案。看着有点乱啊。
请教:反复点击同一个tabbar的item来改变它的图标,出现卡顿
引用 6 楼 zhanglei5415 的回复:

你的代码要表达的是个什么意思。有没有更优的方案。看着有点乱啊。

要实现的功能就是通过item被选择的次数count来改变它的图标,再进行其他操作。问题是这种更换某个item图标的方法可行吗?为什么有时候会出现卡顿,点击跟图标变换之间有延时

请教:反复点击同一个tabbar的item来改变它的图标,出现卡顿
本帖最后由 zhangao0086 于 2015-03-30 16:03:31 编辑
引用 5 楼 r614288863 的回复:
Quote: 引用 3 楼 zhangao0086 的回复:

把你tagbar相关的代码贴上来

上面的那个方法会在个别情况下导致item的图标更换或者controller切换卡顿吗?

改变图标不会卡,这个通知kUpdateUnreadNum做哪些了事情?

请教:反复点击同一个tabbar的item来改变它的图标,出现卡顿
引用 8 楼 zhangao0086 的回复:
Quote: 引用 5 楼 r614288863 的回复:
Quote: 引用 3 楼 zhangao0086 的回复:

把你tagbar相关的代码贴上来

上面的那个方法会在个别情况下导致item的图标更换或者controller切换卡顿吗?

改变图标不会卡,这个通知kUpdateUnreadNum做哪些了事情?

发了一个通知,该item对应的controller里注册了这个通知,并且有一个更新数据库的操作。

请教:反复点击同一个tabbar的item来改变它的图标,出现卡顿
10分
引用 7 楼 r614288863 的回复:
Quote: 引用 6 楼 zhanglei5415 的回复:

你的代码要表达的是个什么意思。有没有更优的方案。看着有点乱啊。

要实现的功能就是通过item被选择的次数count来改变它的图标,再进行其他操作。问题是这种更换某个item图标的方法可行吗?为什么有时候会出现卡顿,点击跟图标变换之间有延时

代码中倒是没有耗时的操作。唯一要查检的就是发送通知的地方,虽是一个异步的,不阻塞线程。但目前可怀疑的就是这个地方。可尝试注释通知部分的代码。再运行看一下运行效率如何。

请教:反复点击同一个tabbar的item来改变它的图标,出现卡顿
引用 8 楼 zhangao0086 的回复:
Quote: 引用 5 楼 r614288863 的回复:
Quote: 引用 3 楼 zhangao0086 的回复:

把你tagbar相关的代码贴上来

上面的那个方法会在个别情况下导致item的图标更换或者controller切换卡顿吗?

改变图标不会卡,这个通知kUpdateUnreadNum做哪些了事情?

如果这里做了优化,无变化时不需要发通知,这个方法里还有其他地方可能造成卡顿吗?

请教:反复点击同一个tabbar的item来改变它的图标,出现卡顿
30分
引用 11 楼 r614288863 的回复:
Quote: 引用 8 楼 zhangao0086 的回复:
Quote: 引用 5 楼 r614288863 的回复:
Quote: 引用 3 楼 zhangao0086 的回复:

把你tagbar相关的代码贴上来

上面的那个方法会在个别情况下导致item的图标更换或者controller切换卡顿吗?

改变图标不会卡,这个通知kUpdateUnreadNum做哪些了事情?

如果这里做了优化,无变化时不需要发通知,这个方法里还有其他地方可能造成卡顿吗?

你可以先把数据库操作暂时注释,显而易见的是,如果数据库操作在主线程上(下断点,看是不是在Thread 1上),是会造成卡顿的

请教:反复点击同一个tabbar的item来改变它的图标,出现卡顿
引用 12 楼 zhangao0086 的回复:
Quote: 引用 11 楼 r614288863 的回复:
Quote: 引用 8 楼 zhangao0086 的回复:
Quote: 引用 5 楼 r614288863 的回复:
Quote: 引用 3 楼 zhangao0086 的回复:

把你tagbar相关的代码贴上来

上面的那个方法会在个别情况下导致item的图标更换或者controller切换卡顿吗?

改变图标不会卡,这个通知kUpdateUnreadNum做哪些了事情?

如果这里做了优化,无变化时不需要发通知,这个方法里还有其他地方可能造成卡顿吗?

你可以先把数据库操作暂时注释,显而易见的是,如果数据库操作在主线程上(下断点,看是不是在Thread 1上),是会造成卡顿的

get~~谢谢版主大神!


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明请教:反复点击同一个tabbar的item来改变它的图标,出现卡顿
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!