当前位置: 首页 > news >正文

专业的网站开发建设培训班有哪些课程

专业的网站开发建设,培训班有哪些课程,做算命类网站违法吗,php网站开发答案一般,类似聊天软件的输入框默认都是显示一行的,在用户输入过程中根据输入文字的内容来改变输入框的高度,以便显示全部文字。像微信,QQ的输入框就是这样的。那么这个效果应该怎么实现呢? 新博客:wossoneri.c…

一般,类似聊天软件的输入框默认都是显示一行的,在用户输入过程中根据输入文字的内容来改变输入框的高度,以便显示全部文字。像微信,QQ的输入框就是这样的。那么这个效果应该怎么实现呢?

新博客:wossoneri.com

实现这个效果的关键点只有两点:

  1. 获取正在输入内容在UITextView占用了多少行
  2. UITextView动态改变大小

一开始,为了解决第一个问题,我一直在考虑怎么获取换行事件,发现只用捕捉\n输入即可,但这样又有一个麻烦,就是删除行怎么办?所以感觉这个思路太麻烦

对于第一点,有一个方便的计算方法,就是获取UITextView内容的高度比上UITextView的字体的高度,即可得到当前的行数。

这里有一个技巧,那就是不要用UITextViewbound.size.height获取其高度,因为这个获取的高度跟你输入的文字总高度并没有任何关系。

要知道,UITextView是继承UIScrollView的。

NS_CLASS_AVAILABLE_IOS(2_0) @interface UITextView : UIScrollView <UITextInput>

这一点你可以不知道,但根据平时的操作经验,一个UITextView输入文字过多时是可以用手上下拖动浏览内容的,所以可以猜想是和UIScrollView有关系。

另一个类似的输入框UITextField不支持换行哦,设置什么lineBreakMode啊,lineNumber(好像没这个属性)啊都不可以换行!我以前在这上面栽过跟头。UITextField输入满了会把文字顶到前面看不见的地方,但还不支持左右拖动!这一点比Android体验要差!

好了,知道其集成UIScrollView就好办了,因为UITextView只有在输入内容超过其显示范围才可以拖动,那就知道输入文字的bound就是UIScrollViewcontentSize。这样就知道输入内容的总大小了。

那每一行的高度呢?

按我以前的经验,行高差不多是字体大小的 4/3 倍.这样设值显示效果一般都挺好。所以可以设值一个宏定义来处理与字体相关的高度。

当然,我的经验是因为过去没有这方面经验的笨办法,正确的办法是使用FontlineHeight属性:

// The height of text lines (measured in points). (read-only)
@property(nonatomic,readonly)        CGFloat   lineHeight NS_AVAILABLE_IOS(4_0);

OK,知道每行的高度,就可以计算当前有多少行文字了,在

- (void)textViewDidChange:(UITextView *)textView

代理方法中计算高度即可。

对于第二点,根据计算出的高度重绘界面布局即可。这里我用的是自动布局,每次高度改变就刷新布局关系就行。下面放部分代码:

我把输入框和一些其他组件封装为一个控件,在类中声明代理:

@protocol EssayEditDelegate <NSObject>@optional
- (void) onTextViewLineCountChangeTo:(NSInteger)lines;@end

在每次输入内容的时候计算行数,声明一个变量保存上一次的行数,两次行数不一致即为发生换行

(void)textViewDidChange:(UITextView *)textView {NSInteger numLines = textView.contentSize.height / textView.font.lineHeight;if (numLines != rows) {rows = numLines;//发生换行if (_delegate && [_delegate respondsToSelector:@selector(onTextViewLineCountChangeTo:)]) {[_delegate onTextViewLineCountChangeTo:rows];}}......
}

在外部实现代理方法,更新界面

#pragma mark - Essay delegate
- (void)onTextViewLineCountChangeTo:(NSInteger)lines {rowCount = lines;[self remakeConstraint];
}- (void)remakeConstraint {NSInteger toobarHeight;NSInteger rows = rowCount > DEFAULT_ROW_COUNT ? rowCount : DEFAULT_ROW_COUNT;toobarHeight = (ESSAY_EDIT_FONT_SIZE / 2 * 3) * rows + MARGIN_BUTTON * 2;[toolBarView mas_remakeConstraints:^(MASConstraintMaker *make) {make.left.bottom.right.equalTo(self);make.top.equalTo(quesImageView.mas_bottom);make.height.mas_equalTo(toobarHeight);}];
}

转载于:https://www.cnblogs.com/rossoneri/p/5199469.html

http://www.lbrq.cn/news/2679211.html

相关文章:

  • 网站建设准备杭州营销策划公司排名
  • 北京垡头网站建设公司长沙搜索排名优化公司
  • 苹果手机如何添加网站如何自己免费制作网站
  • 网站如何制作的网站优化招商
  • 广东省建设部网站seo优化名词解释
  • 泰兴网站优化网站seo关键词优化排名
  • 学 网站开发网站的优化
  • 做刷题网站赚钱么大兵seo博客
  • html公司网站模板源码在线发外链工具
  • 在日本怎样做网站今天重大新闻国内最新消息
  • 建设一个功能简单的网站天津百度推广中心
  • 网站背景动图怎么做漯河网站推广公司
  • 宜宾做直销会员网站2019网站seo
  • wordpress 文章顺序seo网站设计工具
  • 杭州住房和城乡建设局网站首页最彻底的手机优化软件
  • 美图网seo外链推广员
  • 今日陕西疫情最新消息在线刷seo
  • 怎么用linux做网站服务器短视频seo关键词
  • 有网站制作app要多长时间沈阳专业seo
  • 神华集团两学一做登陆网站合肥正规的seo公司
  • wordpress 新增seo搜索引擎优化价格
  • 怎么在搜狐快站上做网站外贸网站建设公司哪家好
  • 网站已付款方式在线crm软件
  • 北京P2P公司网站建设能打开任何网站浏览器
  • 荆州哪里有做网站的百度自然排名优化
  • 官方网站建设合同百度推广电话销售话术
  • 大连龙采做网站seo基础
  • 专业的网站建设科技公司杭州seo价格
  • 如何给网站做排名竞价推广工具
  • 怎么找做网站的公司百度信息流广告怎么收费
  • 京东方 DV133FHM-NN1 FHD13.3寸 工业液晶模组技术档案
  • Bevy渲染引擎核心技术深度解析:架构、体积雾与Meshlet渲染
  • 纯CSS+JS制作抽奖大转盘
  • 机器学习 TF-IDF提取关键词,从原理到实践的文本特征提取利器​
  • 标准io(1)
  • 视觉相机偏移补偿