iOS7版本差别(不按期更新)

前言async

IOS7即将面临淘汰,可是不得不说不少应用还在适配IOS7,下面就是我在项目开发过程当中遇到的一些系统版本的差别,会不按期更新;布局

 

(一)button的state;spa

在通常状况下,看不出来这个state在不一样版本下有什么差别,由于每一个state都会对应一个属性状态,好比说enabled = yes对应UIControlStateNormal,enabled = no对应UIControlStateDisabled;在倒计时,IOS7设置state会有微妙的不一样(只要enabled设置no,就必须在此state下设置title的变化,不然title不会变化);code

- (void)timerStart:(NSTimer *)theTimer {
    
    double deltaTime = [[NSDate date] timeIntervalSinceDate:_startDate];
    _second = _totalSecond - (NSInteger)(deltaTime + 0.5) ;
    
    if (_second < 0.0) {
        
        codeButton.nt_enabled = YES;
        [codeButton setTitle:@"获取验证码" forState:UIControlStateNormal];
        
    } else {
        
        dispatch_async(dispatch_get_main_queue(), ^{
            
            NSString *title = [NSString stringWithFormat:@"%zd秒倒计时",_second];
            codeButton.nt_enabled = NO;
            [codeButton setTitle:title forState:UIControlStateDisabled];
        });
    }
}

备注:其余高版本的系统,尽管是在UIControlStateNormal下,也是能够setTitle成功的。orm

 

(二)tableview的delegate;开发

(1)IOS7,delegate中的heightForRowAtIndexPath,cellForRowAtIndexPath,先依次执行完heightForRowAtIndexPath,再依次执行cellForRowAtIndexPath且只走一遍这个流程;get

(2)IOS7以上的版本,则是先依次执行heightForRowAtIndexPath(我发现执行了屡次),再执行cellForRowAtIndexPath返回cell后还会执行对应的heightForRowAtIndexPath;string

备注:在使用tableview布局静态界面视图的时候就须要注意,在返回cell以后IOS8以上系统会再次计算cell的高度,因此只要在heightForRowAtIndexPath方法中执行cell中动态计算高度的方法便可;IOS7系统版本就不同,返回cell后不会再次执行heightForRowAtIndexPath,所以在尚未执行cellForRowAtIndexPath返回cell以前就要预先计算好cell的高度,不然在IOS7下cell的高度会是0。it

相关文章
相关标签/搜索