iOS- 快速實(shí)現(xiàn)展示布局


看到這個(gè)界面,是不是覺得不像那種比較有規(guī)律的, 可以用 單獨(dú) tableViewCell 或者 xib 來實(shí)現(xiàn)方便些的,現(xiàn)在我直接在 C里快速實(shí)現(xiàn)展示布局.

先看布局, 可以分成兩個(gè)分區(qū):在數(shù)據(jù)源方法里去處理展現(xiàn)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    if (indexPath.section == 0) {
        
        static NSString *CellIdentifier = @"cell0";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
            cell.selectionStyle = UITableViewCellSelectionStyleNone;
            cell.backgroundColor = [UIColor whiteColor];
        } else {
            for(UIView *view in cell.contentView.subviews) {
                [view removeFromSuperview];
            }
        }
// 處理第一分區(qū)
 return cell;
        
    } else if (indexPath.section == 1) {
        
        static NSString *CellIdentifier = @"cell1";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if(cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
            cell.selectionStyle = UITableViewCellSelectionStyleNone;
            cell.backgroundColor = [UIColor whiteColor];
        } else {
            for(UIView *view in cell.contentView.subviews) {
                [view removeFromSuperview];
            }
        }
// 處理第二分區(qū)
  return cell;
    }
    return nil;
}

第一部分可以用兩個(gè)標(biāo)簽去處理展示:

NSArray *nameArr = @[@"商品銷售額",@"商品銷售毛利",@"毛利率"];
        NSArray *valueArr = @[@"¥311.00",@"¥143.00",@"46.11%"];
        NSInteger count = nameArr.count;
        
        for (int i=0; i<count; i++) { // 循環(huán)創(chuàng)建兩個(gè)標(biāo)簽
            UIView *backView = [[UIView alloc] init];
            backView.frame = CGRectMake(i*UI_View_Width/count, 30, UI_View_Width/count, 40);
            [cell.contentView addSubview:backView];
            
            UILabel *nameLabel = [[UILabel alloc] init];
            nameLabel.frame = CGRectMake(0, 0, UI_View_Width/count, 20);
            nameLabel.font = [UIFont systemFontOfSize:14];
            nameLabel.textColor = YYPColor(52, 53, 54);
            nameLabel.textAlignment = NSTextAlignmentCenter;
            nameLabel.text = nameArr[i];
            [backView addSubview:nameLabel];
            
            UILabel *valueLabel = [[UILabel alloc] init];
            valueLabel.frame = CGRectMake(0, 20, UI_View_Width/count, 20);
            valueLabel.font = [UIFont systemFontOfSize:16];
            valueLabel.textColor = YYPColor(255, 45, 77);
            valueLabel.textAlignment = NSTextAlignmentCenter;
            valueLabel.text = valueArr[i];
            [backView addSubview:valueLabel];
            
            if (i > 0) { // 添加間隔豎線
                UIView *line = [[UIView alloc] init];
                line.frame = CGRectMake(0, 0, 0.5, 40);
                line.backgroundColor = YYPColor(200, 200, 200);
                [backView addSubview:line];
            }
        }

第二部分可以利用一個(gè)標(biāo)簽創(chuàng)建通過富文本去修改布局:

NSArray *dataSource = @[
                                @{@"name":@"主糧系列", @"price1":@"85", @"price2":@"83", @"percent":@"4166"},
                                @{@"name":@"零食大全", @"price1":@"85", @"price2":@"83", @"percent":@"4166"},
                                ];
        
        UILabel *nameLabel = [[UILabel alloc]init];
        nameLabel.frame = CGRectMake(12, 0, 90, 60);
        nameLabel.font = [UIFont systemFontOfSize:14];
        nameLabel.textColor = YYPColor(52, 53, 54);
        nameLabel.text = dataSource[indexPath.row][@"name"];
        [cell.contentView addSubview:nameLabel];
        
        for (int i=0; i<3; i++) { // 循環(huán)創(chuàng)建一個(gè)標(biāo)簽
            
            CGFloat magrinL = 12;
            
            UILabel *crossLabel = [[UILabel alloc]init];
            crossLabel.frame = CGRectMake(magrinL+90+i*(UI_View_Width-magrinL-90)/3.0, 0, (UI_View_Width-magrinL-90)/3.0, 60);
            crossLabel.font = [UIFont systemFontOfSize:14];
            crossLabel.textColor = YYPColor(52, 53, 54);
            crossLabel.numberOfLines = 0;
            crossLabel.textAlignment = NSTextAlignmentCenter;
            NSString *titleStr; // 標(biāo)題
            NSString *valueStr; // 值
            if (i == 0) {
                titleStr = @"銷售額";
                valueStr = [NSString stringWithFormat:@"¥%@", dataSource[indexPath.row][@"price1"]];
            } else if (i == 1) {
                titleStr = @"毛利";
                valueStr = [NSString stringWithFormat:@"¥%@", dataSource[indexPath.row][@"price2"]];
            } else if (i == 2) {
                titleStr = @"毛利率";
                valueStr = [NSString stringWithFormat:@"%@%%", dataSource[indexPath.row][@"percent"]];
            }
          // 創(chuàng)建通過富文本去修改色系
            NSMutableAttributedString *string = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@"%@\n%@", titleStr, valueStr]];
            [string addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12] range:NSMakeRange(titleStr.length+1, valueStr.length)];
            [string addAttribute:NSForegroundColorAttributeName value:YYPColor(170, 170, 170) range:NSMakeRange(titleStr.length+1, valueStr.length)];
            
            NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
            paragraphStyle.alignment = NSTextAlignmentCenter;//居中
            paragraphStyle.lineSpacing = 3; // 調(diào)整行間距
            [string addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [string length])];
            crossLabel.attributedText = string;
            [cell.contentView addSubview:crossLabel];
            
            if (i > 0) { // 循環(huán)添加間隔橫線
                UIView *line = [[UIView alloc] init];
                line.frame = CGRectMake(15, 59, UI_View_Width - 15, 0.5);
                line.backgroundColor = YYPColor(200, 200, 200);
                [cell.contentView addSubview:line];
            }
        }

這兩個(gè)方法, 第一個(gè)布局用的較多, 第二個(gè)可以在商品介紹里用上富文本去修改色系.

**PS:建議像這種死的分區(qū)可以這么來,但是多數(shù)據(jù)需要后臺(tái)傳數(shù)據(jù)的那種最好用 MVC來實(shí)現(xiàn). **
個(gè)人感覺后期維護(hù)修改界面布局的情況下, 直接在 cell 里修改會(huì)比較清晰方便.

第二種方法這里測(cè)試一下:
當(dāng)以 MVC 形式來寫的話, 標(biāo)簽我在 Cell 里還是用一個(gè)來先創(chuàng)建, 只不過多寫一個(gè)label 的富文本布局方法.

/**
 * label 的富文本布局
 * 
 * titleStr 標(biāo)題
 * ValueStr 值
 */
- (NSMutableAttributedString *)setupAttriLabelWithTitleStr:(NSString *)titleStr ValueStr:(NSString *)valueStr {
    
    NSMutableAttributedString *string = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@"%@\n%@", titleStr, valueStr]];
    [string addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12] range:NSMakeRange(titleStr.length+1, valueStr.length)];
    [string addAttribute:NSForegroundColorAttributeName value:YYPColor(170, 170, 170) range:NSMakeRange(titleStr.length+1, valueStr.length)];
    
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    paragraphStyle.alignment = NSTextAlignmentCenter; // 居中
    paragraphStyle.lineSpacing = 3; // 調(diào)整行間距
    [string addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [string length])];
    
    return string;
}

然后在 Model 賦值里調(diào)用這個(gè)方法

// model賦值
- (void)setModel:(YYPSalesMarginModel *)model {
    
    _model = model;
    
    // 商品系列名稱
    self.name.text = [NSString stringWithFormat:@"%@", model.name];
    
    // 銷售額
    self.sale.attributedText = [self setupAttriLabelWithTitleStr:@"銷售額" ValueStr:[NSString stringWithFormat:@"¥%.2f", model.sale]];
    
    // 毛利
    self.grossProfit.attributedText = [self setupAttriLabelWithTitleStr:@"毛利" ValueStr:[NSString stringWithFormat:@"¥%.2f", model.grossProfit]];
    
    // 毛利率
    self.percent.attributedText = [self setupAttriLabelWithTitleStr:@"毛利率" ValueStr:[NSString stringWithFormat:@"%.2f%%", model.percent]];
}
MVC 創(chuàng)建效果圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市泽篮,隨后出現(xiàn)的幾起案子包帚,更是在濱河造成了極大的恐慌,老刑警劉巖倔监,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件戒幔,死亡現(xiàn)場(chǎng)離奇詭異访递,居然都是意外死亡粒梦,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門荸实,熙熙樓的掌柜王于貴愁眉苦臉地迎上來匀们,“玉大人,你說我怎么就攤上這事准给⌒蛊樱” “怎么了重抖?”我有些...
    開封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)祖灰。 經(jīng)常有香客問我钟沛,道長(zhǎng),這世上最難降的妖魔是什么局扶? 我笑而不...
    開封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任恨统,我火速辦了婚禮,結(jié)果婚禮上三妈,老公的妹妹穿的比我還像新娘畜埋。我一直安慰自己,他們只是感情好畴蒲,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開白布悠鞍。 她就那樣靜靜地躺著,像睡著了一般模燥。 火紅的嫁衣襯著肌膚如雪咖祭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天蔫骂,我揣著相機(jī)與錄音么翰,去河邊找鬼。 笑死纠吴,一個(gè)胖子當(dāng)著我的面吹牛硬鞍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播戴已,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼固该,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了糖儡?” 一聲冷哼從身側(cè)響起伐坏,我...
    開封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎握联,沒想到半個(gè)月后桦沉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡金闽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年纯露,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片代芜。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡埠褪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情钞速,我是刑警寧澤贷掖,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站渴语,受9級(jí)特大地震影響苹威,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜驾凶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一牙甫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧狭郑,春花似錦腹暖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)抱虐。三九已至,卻和暖如春殖告,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背雳锋。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工黄绩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人玷过。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓爽丹,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親辛蚊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子粤蝎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件袋马、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,066評(píng)論 4 62
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理初澎,服務(wù)發(fā)現(xiàn),斷路器虑凛,智...
    卡卡羅2017閱讀 134,637評(píng)論 18 139
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案碑宴? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,737評(píng)論 1 92
  • 星星是個(gè)在很多人面前顯得非常沉默的一個(gè)人锣披,但是私下里卻非巢蹲校活潑可愛匕积,而且經(jīng)常鬧出很多笑話。星星常常在閨蜜們面前稱自...
    星星fighting閱讀 247評(píng)論 0 1
  • 囚徒困境(Prisoner's Dilemma)反映了個(gè)人最佳選擇并非團(tuán)體最佳選擇榜跌。或者說在一個(gè)群體中盅粪,個(gè)人做出理...
    靳曉陽(yáng)s閱讀 763評(píng)論 0 0