iOS
来源:互联网 发布:电话线传网络 编辑:程序博客网 时间:2024/06/06 01:53
//
// ViewController.m
// HideMoreDemo
//
// Created by 坏先森 on 2017/5/22.
// Copyright © 2017年坏先森. All rights reserved.
//
// 默认超过100字之后,其余部分隐藏
#define DEFAULT_HIDDEN_LENGTH 100
#import "ViewController.h"
@interface ViewController () {
UIButton *_more; // 更多按钮
UILabel *_label; // 动态的label
NSString *_totalString; // 某人发动态的原文
BOOL _isHidden; // 更多按钮隐藏与否
}
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_totalString =@"1.我是一段很短的文字!用来测试更多按钮会不会显示,如果这么短的文字,更多按钮再显示,那么代码肯定是有问题的!";
//_totalString = @"2.本demo主要实现类似于微信朋友圈的动态文字部分,如果朋友圈某个人发的动态非常长,那么肯定是不能让它全部显示的,这就是所说的更多按钮,如果文字很短,那么更多按钮是隐藏的.点击更多按钮之后,文字全部展开,更多按钮随之下移,并且文字变为收回,再点击则还原。这里只实现初步的功能,实际开发中肯定会有其他的需求,比如展开之后下滑看其他的动态,回来之后默认关闭等等之类的需求,在此不做说明!这段文字就是某人发动态的原文,本文默认超过100字之后,多余的部分隐藏,代码比较简单,不做赘述!";
[selfcreatUI];
}
#pragma mark - 方法
- (void)creatUI {
if (_totalString.length < DEFAULT_HIDDEN_LENGTH) {
_isHidden =YES;
}
_label = [[UILabelalloc] init];
_label.backgroundColor = [UIColorcyanColor];
_label.textColor = [UIColorblackColor];
_label.numberOfLines =0;
_label.text =_totalString;
_label.font = [UIFontsystemFontOfSize:16.0f];
[self.viewaddSubview:_label];
_more = [UIButtonbuttonWithType:UIButtonTypeCustom];
_more.backgroundColor = [UIColoryellowColor];
[_moresetTitle:@"more"forState:UIControlStateNormal];
[_moresetTitle:@"close"forState:UIControlStateSelected];
[_moresetTitleColor:[UIColorredColor] forState:UIControlStateNormal];
[_moreaddTarget:selfaction:@selector(moreClick)forControlEvents:UIControlEventTouchUpInside];
[self.viewaddSubview:_more];
[selfzjjChangeFrameWithBool:_isHidden];
}
- (float)calculateFitHeightWithString:(NSString *)string {
CGRect rect = [stringboundingRectWithSize:CGSizeMake(self.view.frame.size.width-20,10000) options:NSStringDrawingUsesLineFragmentOriginattributes:@{NSForegroundColorAttributeName:[UIColorblackColor],NSFontAttributeName:[UIFontsystemFontOfSize:16.0f]}context:nil];
return rect.size.height;
}
#pragma mark - 方法
- (void)moreClick {
_isHidden = !_isHidden;
[selfzjjChangeFrameWithBool:_isHidden];
_more.selected =_isHidden;
_more.hidden =NO;
}
- (void)zjjChangeFrameWithBool:(BOOL)isHidden {
float labelH =0.0f;
if (isHidden) {
labelH = [selfcalculateFitHeightWithString:_totalString];
}else {
NSRange range =NSMakeRange(0,DEFAULT_HIDDEN_LENGTH);
NSString *subString = [_totalStringsubstringWithRange:range];
labelH = [selfcalculateFitHeightWithString:subString];
}
_label.frame =CGRectMake(10,100, self.view.frame.size.width-20, labelH+10);
_more.frame =CGRectMake(self.view.frame.size.width-100,_label.frame.size.height+_label.frame.origin.y+10,80, 40);
_more.hidden = isHidden;
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
- iOS
- iOS
- IOS
- iOS
- iOS
- IOS
- ios
- iOS
- iOS
- IOS
- iOS
- ios
- ios ~~~~~
- ios
- IOS
- IOS
- IOS
- ios
- JAVA中的数组
- 黑客必读:蜜罐技术的前世今生
- 电商的概念
- 利用Apache Commons Email发送邮件
- 单点登录原理与简单实现
- iOS
- 修改BUG备注
- ubuntu 16.04 上网出现一些问题解决方法
- 图片大小缩小
- 高性能mysql笔记(六)索引原理和类型
- ArrayList,LinkedList,LinkedSet,区别小总结
- 仿淘宝首页的淘宝头条View垂直滚动
- ScrollView嵌套RecyclerView,RecyclerView总是把它上面的控件顶出页面(页面出现自己滚动)
- 35. Search Insert Position