国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

iOS 結(jié)合YYLabel實(shí)現(xiàn)文本的展開(kāi)和收起

這篇具有很好參考價(jià)值的文章主要介紹了iOS 結(jié)合YYLabel實(shí)現(xiàn)文本的展開(kāi)和收起。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

項(xiàng)目需要實(shí)現(xiàn)文本過(guò)多的時(shí)候最多展示五行,其余的折疊。點(diǎn)擊可展開(kāi),再次點(diǎn)擊可收起。

效果如下:

ios 顯示全文展開(kāi)收起,OC小知識(shí)點(diǎn)的整理,ios,ui

ios 顯示全文展開(kāi)收起,OC小知識(shí)點(diǎn)的整理,ios,ui

這是在UITableView的Cell里實(shí)現(xiàn)的,需要自適應(yīng)高度。

一開(kāi)始自定義了一個(gè)UIView直接追加到需要添加展開(kāi)的最后一行的最后位置,覆蓋了展示的內(nèi)容。實(shí)現(xiàn)的并不完美。效果如下:

ios 顯示全文展開(kāi)收起,OC小知識(shí)點(diǎn)的整理,ios,ui

UI提出了改進(jìn):展開(kāi)和收起都需要更在文本末尾。

網(wǎng)上搜索了一下下,找到了適合自己的方法:鏈接? ? ?

下面記錄一下,加強(qiáng)記憶。

我這里是借用的xib來(lái)實(shí)現(xiàn)的布局,所以這段文本的高度單獨(dú)拿出來(lái)了

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *detailHeight;

獲取五行文本的高度

self.attDic = [NSString attDicWithFont:[UIFont systemFontOfSize:[NSString iPhoneFont:T_2 iPadFont:T_2 + 4]]
                                 textColor: [UIColor useLight:HexColor(0x616A73) Dark:HexAColor(DarkTitle,.6)]
                               textSpacing:0
                               lineSpacing:5
                        lineHeightMultiple:0
                       firstLineHeadIndent:0
                                 alignment:(NSTextAlignmentJustified)
                                headIndent:0
                                tailIndent:0
                    paragraphSpacingBefore:0
                          paragraphSpacing:0];
    
self.heightOfFiveLines = [NSString getHeightOfAttributedString:@"五\n行\(zhòng)n文\n字\n字" width:200 attibuteDic:self.attDic];
//attDic是自己封裝的包含文本屬性的字典
//文本顯示的處理
- (void)setTextForDetail:(NSString *)introInfos {
    if (![introInfos isEqualToString:@""]) {
        self.label_detail.hidden = NO;
        self.background_detail.hidden = NO;
        self.label_detail.attributedText = [[NSAttributedString alloc]initWithString:introInfos attributes:self.attDic];
        self.heightsOfTexts = [NSString getHeightOfAttributedString:introInfos width:SCREEN_WIDTH-30*2 attibuteDic:self.attDic];//文本高度
        
        if (self.heightsOfTexts <= self.heightOfFiveLines) {//不需要折疊,不需要添加展開(kāi)
            self.label_detail.userInteractionEnabled = NO;
            self.label_detail.numberOfLines = 0;
            self.detailHeight.constant = self.heightsOfTexts + 12*2;
            self.topMargin.constant = 10;
        }else{
            self.label_detail.userInteractionEnabled = YES;
            self.view_fold.hidden = NO;
            if (self.foldStatus) {//折疊態(tài)
                self.label_detail.numberOfLines = 5;
                self.detailHeight.constant = self.heightOfFiveLines + 12*2;
                [self setAdjustableTextWithDesc:introInfos];
            }else{
                self.heightsOfTexts = [NSString getHeightOfAttributedString:[NSString stringWithFormat:@"%@...收起",introInfos] width:SCREEN_WIDTH-30*2 attibuteDic:self.attDic];
                self.label_detail.numberOfLines = 0;
                self.detailHeight.constant = self.heightsOfTexts + 12*2;
                [self setShowTextWithDesc:introInfos];
            }
            self.topMargin.constant = 10;
        }
    }else{
        self.label_detail.hidden = YES;
        self.label_detail.text = @"";
        self.background_detail.hidden = YES;
        self.detailHeight.constant = 0;
        self.topMargin.constant = -20;
    }
}
//追加“...收起”
- (void)setShowTextWithDesc:(NSString *)desc {
    NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@...收起",desc] attributes:self.attDic];
    
    @weakify(self)
    //設(shè)置高亮色和點(diǎn)擊事件
    [text yy_setTextHighlightRange:[[text string] rangeOfString:@"收起"]
                             color:HexColor(0x29CCCC)
                   backgroundColor:[UIColor clearColor]
                         tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) {
        @strongify(self)
        [self action_fold];
    }];
    self.label_detail.attributedText = text;
}
//追加“...展開(kāi)”
- (void)setAdjustableTextWithDesc:(NSString *)desc {
    NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString:desc attributes:self.attDic];
    self.label_detail.attributedText = text;
    
    NSMutableAttributedString *showAll = [[NSMutableAttributedString alloc] initWithString:@"...展開(kāi)" attributes:self.attDic];
    @weakify(self)
    [showAll yy_setTextHighlightRange:[[showAll string] rangeOfString:@"展開(kāi)"]
                             color:HexColor(0x29CCCC)
                   backgroundColor:[UIColor clearColor]
                         tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) {
        @strongify(self)
        [self action_fold];
    }];

//注釋掉的地方是一開(kāi)始用的添加附件這樣的方式寫(xiě)的,其實(shí)在這個(gè)場(chǎng)景中并不需要,直接追加富文本就可
    //YYLabel *seeMore = [YYLabel new];
    //seeMore.attributedText = showAll;
    //seeMore.backgroundColor = [UIColor useLight:HexColor(0xFAFBFC) Dark:HexColor(DarkBackground)];
    //[seeMore sizeToFit];
    //NSMutableAttributedString *truncationToken = [NSAttributedString yy_attachmentStringWithContent:seeMore contentMode:UIViewContentModeScaleToFill attachmentSize:seeMore.size alignToFont:[UIFont systemFontOfSize:[NSString iPhoneFont:T_2 iPadFont:T_2 + 4]] alignment:YYTextVerticalAlignmentTop];
    //self.label_detail.truncationToken = truncationToken;

    self.label_details.truncationToken = showAll;
}

點(diǎn)擊事件是個(gè)block,回傳給UITableView

- (void)action_fold{
    if (self.block_fold) {
        self.block_fold([NSNumber numberWithBool:self.foldStatus]);
    }
}

UITableView的代理方法:- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath的處理

BookSheetDetailListBCell *cell = [tableView dequeueReusableCellWithIdentifier:@"BookSheetDetailListBCell"];
cell.foldStatus = [self.foldStatusArray[indexPath.row] boolValue];
cell.infoDic = self.dataArray[indexPath.row];
cell.block_fold = ^(id  _Nonnull info) {
                    @strongify(self)
                    self.foldStatusArray[indexPath.row] = @(![info boolValue]);
                    [self.tableView reloadRowAtIndexPath:indexPath withRowAnimation:(UITableViewRowAnimationFade)];
                };
return cell;

默認(rèn)是不展開(kāi)的狀態(tài)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-594608.html

到了這里,關(guān)于iOS 結(jié)合YYLabel實(shí)現(xiàn)文本的展開(kāi)和收起的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 微信小程序?qū)崿F(xiàn)一個(gè)文字展開(kāi)收起功能

    微信小程序?qū)崿F(xiàn)一個(gè)文字展開(kāi)收起功能

    需求很常見(jiàn),就是當(dāng)一行文字過(guò)多時(shí),顯示省略號(hào),然后顯示 展開(kāi) 兩個(gè)字,點(diǎn)擊,文字完全展示開(kāi),點(diǎn)擊 收起 ,回到省略形式,如下圖 有了上圖,應(yīng)該能更好理解,讓我們?cè)賮?lái)細(xì)致分析下思路: 一行省略號(hào) ,這個(gè)沒(méi)啥難度,css可以實(shí)現(xiàn)(至于多行,差別不大) 展開(kāi)和收

    2024年02月09日
    瀏覽(25)
  • 記錄--不定高度展開(kāi)收起動(dòng)畫(huà) css/js 實(shí)現(xiàn)

    記錄--不定高度展開(kāi)收起動(dòng)畫(huà) css/js 實(shí)現(xiàn)

    最近在做需求的時(shí)候,遇見(jiàn)了元素高度展開(kāi)收起的動(dòng)畫(huà)需求,一開(kāi)始是想到了使用 transition: all .3s; 來(lái)做動(dòng)畫(huà)效果,在固定高度的情況下, transition 動(dòng)畫(huà)很好使,滿足了需求,但是如果要考慮之后可能還會(huì)有更改的情況下,如果每次都是用固定高度來(lái)做動(dòng)畫(huà),會(huì)顯得很繁瑣,也

    2024年02月11日
    瀏覽(33)
  • 微信小程序---緩慢展開(kāi)和收起效果(不需要wx:if控制實(shí)現(xiàn))

    微信小程序---緩慢展開(kāi)和收起效果(不需要wx:if控制實(shí)現(xiàn))

    效果一: 點(diǎn)擊中間問(wèn)題,在中間緩慢展開(kāi)?,將下面往下?lián)伍_(kāi),點(diǎn)擊再次收起效果 效果二: 點(diǎn)擊添加商品,緩慢向下展開(kāi),點(diǎn)擊收起,緩慢將下面收起效果 1、實(shí)現(xiàn)的原理: 通過(guò)height高度來(lái)控制展開(kāi)或收起,當(dāng)不需要展示時(shí),高度為0,超過(guò)的部分用overflow:?hidden;來(lái)隱藏,可

    2024年02月17日
    瀏覽(61)
  • VUE+ElementUI Table表格實(shí)現(xiàn)“指定行“展開(kāi)并且其他行收起,“指定行”數(shù)據(jù)重復(fù)實(shí)現(xiàn)“合并行”

    VUE+ElementUI Table表格實(shí)現(xiàn)“指定行“展開(kāi)并且其他行收起,“指定行”數(shù)據(jù)重復(fù)實(shí)現(xiàn)“合并行”

    遇到甲方爸爸一個(gè)需求,在原本的table表格中需要每一行具有下拉列表的功能,實(shí)現(xiàn)“指定行”展開(kāi),下拉菜單中并且含有數(shù)據(jù)屬性重復(fù)的,則還需合并行。 展開(kāi)行有兩種方式: 方法一是利用table組件中 default-expand-all 屬性,將 “內(nèi)容是否存在” 作為判斷條件,實(shí)現(xiàn)默認(rèn)展開(kāi)

    2024年01月23日
    瀏覽(22)
  • element plus 可選擇樹(shù)形組件(el-tree) 怎樣一鍵展開(kāi)/收起?實(shí)現(xiàn)方法詳解

    element plus 可選擇樹(shù)形組件(el-tree) 怎樣一鍵展開(kāi)/收起?實(shí)現(xiàn)方法詳解

    實(shí)現(xiàn)代碼: 按鈕: 組件: ?在ref中綁定folderTreeRef? 展開(kāi)收起: 效果: 實(shí)現(xiàn)原理: 打印上面的 ? folderTreeRef ,可以從原型鏈的 store 中找到 _getAllNodes 屬性 官方文檔好像沒(méi)有描述關(guān)于此屬性的內(nèi)容,查了好多資料,搜了多篇文章,可以發(fā)現(xiàn) store 原型中有 _getAllNodes 這個(gè)屬性

    2024年01月20日
    瀏覽(107)
  • [vue]v-for循環(huán)出的列表如何實(shí)現(xiàn)每一項(xiàng)單獨(dú)展開(kāi)收起

    [vue]v-for循環(huán)出的列表如何實(shí)現(xiàn)每一項(xiàng)單獨(dú)展開(kāi)收起

    展開(kāi)收起最后一項(xiàng)的內(nèi)容,展開(kāi)收起的圖標(biāo)和信息改變 HTML代碼 javasript data中聲明要循環(huán)的數(shù)據(jù)、當(dāng)前的下標(biāo)(string類型) data中聲明要循環(huán)的數(shù)據(jù)、當(dāng)前的下標(biāo)數(shù)組類型(array) 思路:判斷當(dāng)年下標(biāo)是否在數(shù)組下標(biāo)中來(lái)控制展開(kāi)收起,不存在就將該下標(biāo)加入數(shù)組,再點(diǎn)擊一次

    2024年02月12日
    瀏覽(29)
  • iOS MT19937隨機(jī)數(shù)生成,結(jié)合AES-CBC加密算法實(shí)現(xiàn)。

    按處理順序說(shuō)明: 1. 生成隨機(jī)數(shù)序列字符串函數(shù) 生成方法MT19937,初始種子seed,利用C++庫(kù)方法,生成: 2. 對(duì)第一部中的隨機(jī)數(shù)序列字符串進(jìn)行sha256加密,得到64字節(jié)的一個(gè)數(shù)據(jù)流函數(shù)。 ?3. AES-CBC加密解密方法 /* ? ? CCCrypt方法提供了CBC 和 ECB 兩種AES加密模式, ? ? 如果不傳

    2024年04月09日
    瀏覽(29)
  • 在線圖表編輯工具Draw.io本地部署并結(jié)合內(nèi)網(wǎng)穿透實(shí)現(xiàn)遠(yuǎn)程協(xié)作辦公

    在線圖表編輯工具Draw.io本地部署并結(jié)合內(nèi)網(wǎng)穿透實(shí)現(xiàn)遠(yuǎn)程協(xié)作辦公

    提到流程圖,大家第一時(shí)間可能會(huì)想到Visio,不可否認(rèn),VIsio確實(shí)是功能強(qiáng)大,但是軟件為收費(fèi),并且因?yàn)槠涔δ軓?qiáng)大,導(dǎo)致安裝需要很多的系統(tǒng)內(nèi)存,并且是不可跨平臺(tái)使用。所以,今天給大家推薦一款更實(shí)用的流程圖軟件—— Draw.io 在線繪圖工具。 其實(shí),除了寫(xiě)代碼,畫(huà)

    2024年01月24日
    瀏覽(46)
  • iOS開(kāi)發(fā)-實(shí)現(xiàn)熱門(mén)話題標(biāo)簽tag顯示控件

    iOS開(kāi)發(fā)-實(shí)現(xiàn)熱門(mén)話題標(biāo)簽tag顯示控件

    iOS開(kāi)發(fā)-實(shí)現(xiàn)熱門(mén)話題標(biāo)簽tag顯示控件 話題標(biāo)簽tag顯示非常常見(jiàn),如選擇你的興趣,選擇關(guān)注的群,超話,話題等等。 由于顯示的是在列表中,這里整體控件是放在UITableViewCell中的。 2.1 標(biāo)簽tag按鈕實(shí)現(xiàn) 自定義標(biāo)簽tag按鈕INRmdTopicButton INRmdTopicButton.h INRmdTopicButton.m 2.2 顯示排列

    2024年02月14日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包