IOS開(kāi)發(fā)記錄2017.08.24

這次公司需求做完版本上線随闺,趁著間隙募胃,寫(xiě)一些在這次版本開(kāi)發(fā)中代碼上遇到的問(wèn)題記錄和整個(gè)開(kāi)發(fā)感受的一點(diǎn)想法祥诽。

關(guān)于開(kāi)發(fā)

1.

導(dǎo)航欄顯隱
導(dǎo)航欄顯隱

這里主要用了UIScrollView兩個(gè)代理:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
第一個(gè)可以得到當(dāng)前scrollview的contentoffset從而設(shè)置導(dǎo)航欄和頭部的alpha值來(lái)控制顯隱锥余,第二個(gè)是在用戶(hù)滑動(dòng)到中間時(shí)判斷位置上下自動(dòng)滑動(dòng)避免只滑到中部的情況饼煞,具體代碼:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    
    if (scrollView.contentOffset.y <= 0) {
        scrollView.bounces = false;
    } else if(!scrollView.bounces) {
        scrollView.bounces = true;
    }
    
    CGFloat minAlphaOffset = 0;
    
    CGFloat maxAlphaOffset = 138-64;
    
    CGFloat offset = scrollView.contentOffset.y;
    
    CGFloat alpha = (offset - minAlphaOffset) / (maxAlphaOffset - minAlphaOffset);
    
    self.barView.alpha = alpha;
    self.headView.alpha = 1-alpha;
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    CGFloat offset = scrollView.contentOffset.y;
    if (offset < 74 && offset > 0) {
        if (offset < 37) {
            [self.tableView setContentOffset:CGPointMake(0, 0) animated:true];
        } else {
            [self.tableView setContentOffset:CGPointMake(0, 74) animated:true];
        }
    }
}

2.tableView頁(yè)的刷新邏輯辫塌,目前我是設(shè)置了一個(gè)布爾類(lèi)型的標(biāo)記isFetch表示是否在網(wǎng)絡(luò)請(qǐng)求保證同一時(shí)間只有單一請(qǐng)求,在網(wǎng)絡(luò)請(qǐng)求的時(shí)候判斷并設(shè)成true,在請(qǐng)求失敗或請(qǐng)求成功并且reloaddata后設(shè)回為false派哲。
這里要注意因?yàn)閞eloaddata是異步的臼氨,所以在設(shè)置時(shí)需要放在主線程上:

[self.tableView reloadData];
            dispatch_async(dispatch_get_main_queue(), ^{
                //刷新完成,執(zhí)行后續(xù)代碼
                self.isFetch = false;
            });

3.對(duì)于頁(yè)面上的UI芭届,如果一個(gè)頁(yè)面只創(chuàng)建一次使用一個(gè)的話储矩,建議使用懶加載感耙,把關(guān)于這個(gè)控件的東西都放在加載里設(shè)置。比如我要?jiǎng)?chuàng)建一個(gè)tableView持隧,還要設(shè)置tableHeaderView并且headerView本身也需要多個(gè)控件即硼,那么我就會(huì)這樣寫(xiě):

- (UIView *)headerView
{
    if(!_headerView) {
        _headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 194)];
        _headerView.backgroundColor = [UIColor colorWithRed:0Xec/255.0 green:0Xec/255.0 blue:0Xec/255.0 alpha:1.0];
        
        [_headerView addSubview:self.contentImageView];
        [_headerView addSubview:self.moreButton];
        [_headerView addSubview:self.sendBtton];
        [_headerView addSubview:self.divideView];
        [_headerView addSubview:self.moreFunctionView];
    }
    return _headerView;
}

- (UITableView *)tableView
{
    if (!_tableView) {
        _tableView = [[UITableView alloc] init];
        _tableView.frame = CGRectMake(0, 0, kScreenWidth, kScreenHeight-64);
        _tableView.delegate = self;
        _tableView.dataSource = self;
        _tableView.backgroundColor = [UIColor colorWithRed:0Xf7/255.0 green:0Xf7/255.0 blue:0Xf7/255.0 alpha:1.0];
        _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
        _tableView.showsVerticalScrollIndicator = false;
        [self.view addSubview:_tableView];
        
        _tableView.tableHeaderView = self.headerView;
        _tableView.tableFooterView = [UIView new];
        
        MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(pulldownFetch)];
        header.lastUpdatedTimeLabel.hidden = true;
        _tableView.mj_header = header;
        _tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(fetchServiceNoticeList)];
    }
    return _tableView;
}

以此類(lèi)推,其他的UI也各自寫(xiě)好自己的懶加載方法屡拨。這樣的好處是只要設(shè)置好了就不用再使用時(shí)想是否已經(jīng)創(chuàng)建并且去在想修改某個(gè)控件時(shí)可以輕松定位只酥。
對(duì)于數(shù)據(jù)也是如此。

4.從沒(méi)有navagationbar頁(yè)面跳轉(zhuǎn)到有navigationbar頁(yè)面的時(shí)候把顯示navigationBar方法放push后面呀狼,如:

[self.navigationController pushViewController:vc animated:true];
self.navigationController.navigationBarHidden = false;

這樣在跳轉(zhuǎn)的時(shí)候頁(yè)面不會(huì)提前下移裂允。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市哥艇,隨后出現(xiàn)的幾起案子绝编,更是在濱河造成了極大的恐慌,老刑警劉巖貌踏,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件十饥,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡祖乳,警方通過(guò)查閱死者的電腦和手機(jī)逗堵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)眷昆,“玉大人蜒秤,你說(shuō)我怎么就攤上這事∠读蓿” “怎么了垦藏?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵梆暖,是天一觀的道長(zhǎng)伞访。 經(jīng)常有香客問(wèn)我,道長(zhǎng)轰驳,這世上最難降的妖魔是什么厚掷? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮级解,結(jié)果婚禮上冒黑,老公的妹妹穿的比我還像新娘。我一直安慰自己勤哗,他們只是感情好抡爹,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著芒划,像睡著了一般冬竟。 火紅的嫁衣襯著肌膚如雪欧穴。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,792評(píng)論 1 290
  • 那天泵殴,我揣著相機(jī)與錄音涮帘,去河邊找鬼。 笑死笑诅,一個(gè)胖子當(dāng)著我的面吹牛调缨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吆你,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼弦叶,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了早处?” 一聲冷哼從身側(cè)響起湾蔓,我...
    開(kāi)封第一講書(shū)人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎砌梆,沒(méi)想到半個(gè)月后默责,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡咸包,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年桃序,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烂瘫。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡媒熊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出坟比,到底是詐尸還是另有隱情芦鳍,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布葛账,位于F島的核電站柠衅,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏籍琳。R本人自食惡果不足惜菲宴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望趋急。 院中可真熱鬧喝峦,春花似錦、人聲如沸呜达。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至眉踱,卻和暖如春勋颖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背勋锤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工饭玲, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人叁执。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓茄厘,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親谈宛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子次哈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件吆录、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,059評(píng)論 4 62
  • 1.badgeVaule氣泡提示 2.git終端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夾內(nèi)容...
    i得深刻方得S閱讀 4,640評(píng)論 1 9
  • 可能配色上還是有點(diǎn)問(wèn)題吧我感覺(jué)………
  • 【上一章】超凡探長(zhǎng)(十一)(目錄) 話說(shuō)譚銘將杜邊的妻子帶回到警察局窑滞,安排了她探望了杜邊,并說(shuō)服她暫時(shí)不要回家恢筝。加...
    熊六閱讀 222評(píng)論 8 3
  • 還是把郵件發(fā)了出去撬槽,至少是一種期許吧此改,或許什么都不會(huì)獲得,也或者有所轉(zhuǎn)機(jī)侄柔,但一切都是得之所幸共啃,失之所命,爭(zhēng)取了不一...
    聶一一閱讀 128評(píng)論 0 0