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

宿州网站建设百度认证营销顾问

宿州网站建设,百度认证营销顾问,做网站三年3万块钱,邀请码网站怎么做【iOS】知乎日报第三周总结 文章目录 【iOS】知乎日报第三周总结前言评论区文字评论区的一个展开效果评论区数据的一个请求修改了主页获取数据的逻辑主页无限轮播图图片主色调的一个获取将一些拓展部分的内容写在分类里小结 前言 本周笔者因为金工实习整个项目进展比较慢&#…

【iOS】知乎日报第三周总结

文章目录

  • 【iOS】知乎日报第三周总结
    • 前言
    • 评论区文字
    • 评论区的一个展开效果
    • 评论区数据的一个请求
    • 修改了主页获取数据的逻辑
    • 主页无限轮播图图片主色调的一个获取
    • 将一些拓展部分的内容写在分类里
    • 小结

前言

本周笔者因为金工实习整个项目进展比较慢,因为金工实习耽搁了挺长一段时间的,这周项目进展比较缓慢。下面简单介绍一下有关于这周学到的一些内容和遇到的一些问题。

评论区文字

在这里插入图片描述

笔者采用了一个textView实现了一个cell自适应文字的行高的效果,这里的实现主要是通过以下几个步骤来实现的,首先我们先定义uitableView的两个属性

self.tableView.estimatedRowHeight = 100;
self.tableView.rowHeight = UITableViewAutomaticDimension;

一个是设置一个自适应行高的一个效果,另一个则是一个设置每一个cell的一个预估的高度,这样可以实现一个减小计算量的效果,从而提高效率。然后便是通过我们的一个cell中的控价实现一个撑开cell高度的效果,这里我们只要设置textView的时候需要注意一下我们一定要和cell的contentView来进行一个关联:

[_headLabel mas_makeConstraints:^(MASConstraintMaker *make) {make.top.equalTo(self.contentView).offset(10);make.left.equalTo(self.contentView).offset(10);make.width.equalTo(@100);}];[_image mas_makeConstraints:^(MASConstraintMaker *make) {make.left.equalTo(self.contentView).offset(10);make.top.equalTo(self.headLabel.mas_bottom).offset(20);make.height.equalTo(@40);make.width.equalTo(@40);}];[_nameLabel mas_makeConstraints:^(MASConstraintMaker *make) {make.left.equalTo(self.image.mas_right).offset(10);make.top.equalTo(self.headLabel.mas_bottom).offset(30);make.width.equalTo(@200);make.height.equalTo(@20);}];[_textView mas_makeConstraints:^(MASConstraintMaker *make) {make.top.equalTo(self.image.mas_bottom);//make.bottom.equalTo(self.contentView.mas_bottom).offset(-10);//make.bottom.equalTo(self.contentView.mas_bottom).offset(-10);make.left.equalTo(self.nameLabel);//make.top.equalTo(self.contentView.mas_top).offset(5);make.right.equalTo(self.contentView);}];[_commentText mas_makeConstraints:^(MASConstraintMaker *make) {make.top.equalTo(_textView.mas_bottom);make.left.equalTo(self.textView.mas_left);make.right.equalTo(self.contentView.mas_right);//make.bottom.equalTo(self.contentView.mas_bottom);}];[_timeLabel mas_makeConstraints:^(MASConstraintMaker *make) {make.top.equalTo(_commentText.mas_bottom).offset(5);make.bottom.equalTo(self.contentView.mas_bottom).offset(-10);make.left.equalTo(self.textView).offset(5);make.width.equalTo(@120);}];[_commentButton mas_makeConstraints:^(MASConstraintMaker *make) {make.height.equalTo(@20);make.bottom.equalTo(self.timeLabel.mas_bottom);make.right.equalTo(self.contentView).offset(-20);make.width.equalTo(@20);}];[_likeButton mas_makeConstraints:^(MASConstraintMaker *make) {make.height.equalTo(@20);make.bottom.equalTo(self.timeLabel.mas_bottom);make.right.equalTo(_commentButton.mas_left).offset(-30);make.width.equalTo(@30);}];

这里我们需要注意下这里我们之所以不设置高度是为了让我们的文字来撑开textView,让textView来适应文字的高度来决定它控件的一个高度。再让我们的textView和一系列相关空间来撑开我们的一个cell。之后笔者会再写一篇博客总结所有的评论区的内容。

评论区的一个展开效果

笔者这里的展开效果存在一些问题,但是我大致可以实现一个展开的效果,这里先简单介绍一下如何实现,后面会在博客中重新总结一下。

在这里插入图片描述

这里笔者采用了一个NSMutableAttributedString这个类来实现的,这个类可以给给某一句话设置点击事件,(虽然那个似乎是一个链接的效果)笔者也仅仅只是一个初步的学习,没有很理解这个类的一个具体实现,后面会在补充。下面笔者先给出代码:

- (void)addTitleButton:(NSString*) suffixStr andContent:(NSString*) contentStr andAtrutbeString:(NSMutableAttributedString*) attStr{NSLog(@"111");if(suffixStr){// NSLog(@"响应事件");NSLog(@"添加响应事件:%@, %@, %@", suffixStr, attStr.string, contentStr);NSRange range3 = [contentStr rangeOfString:suffixStr];NSLog(@"%ld %ld", range3.location, range3.length);NSLog(@"%@", [contentStr substringWithRange:range3]);[attStr addAttribute:NSForegroundColorAttributeName value:[UIColor lightGrayColor] range:[contentStr rangeOfString:contentStr]];[attStr addAttribute:NSForegroundColorAttributeName value:[UIColor grayColor] range:range3];NSString *valueString3 = [[NSString stringWithFormat:@"didOpenClose://%@", suffixStr] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]];NSLog(@"%@", valueString3);[attStr addAttribute:NSLinkAttributeName value:valueString3 range:range3];}
}
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange {//设置textView的一个代理if ([[URL scheme] isEqualToString:@"didOpenClose"]) {CommentsTableViewCell* cell = (CommentsTableViewCell*)textView.superview.superview;NSIndexPath* indexpath = [self.iView.tableView indexPathForCell:cell];self.shortCommentsModel.comments[indexpath.row].isOpen = !self.shortCommentsModel.comments[indexpath.row].isOpen;[self.iView.tableView reloadRowsAtIndexPaths:@[indexpath] withRowAnimation:UITableViewRowAnimationNone];//刷新某一行的cellNSLog(@"响应事件");return NO;}return YES;
}

这里笔者还没有彻底实现一个让展开二字紧紧跟在第二行的末尾的一个实现,所以笔者之后还要修改一下这部分代码,这部分代码的逻辑还存在着一些问题。

评论区数据的一个请求

评论区主要分成了两个部分,一个是长评论,一部分是短评论,我们需要让两个评论区的内容全部加载完在开始布局我们的tableView所以这里笔者采用了一个方法来封装我们获取长短评论的内容。

- (void)allCommentsContentNsstring:(nonnull NSString *)string {dispatch_group_t group = dispatch_group_create();NSMutableArray* ary = [NSMutableArray array];dispatch_group_enter(group);[[Manger sharedManger] shortCommentContent:^(CommentsModel * _Nonnull model) {self.shortCommentsModel = model;dispatch_group_leave(group);} andNsstring:string];dispatch_group_enter(group);[[Manger sharedManger] longCommentContent:^(CommentsModel * _Nonnull model) {self.LongCommentsModel = model;dispatch_group_leave(group);} andNsstring:string];dispatch_group_notify(group, dispatch_get_main_queue(), ^{self.iView.tableView.delegate = self;self.iView.tableView.dataSource = self;[self.iView.tableView registerClass:[CommentsTableViewCell class] forCellReuseIdentifier:@"comments"];[self.iView.tableView reloadData];});
}

但笔者对于GCD和AFN的原理还不是很清楚,对于这种实现是否正确还不太清楚,但笔者采用了这种方式来保证两个评论内容获取完毕之后才会进行一个加载。

修改了主页获取数据的逻辑

听从学长的一个建议将一次加载一个数据修改成了一次加载三个数据,让滑动更加流畅和自然。

主页无限轮播图图片主色调的一个获取

笔者找到了获取图片主色调的一个代码内容,但是还没有实现一个下方轮播图的一个模糊效果,这里也不太了解代码的原理实现,需要之后学习GCD之后再进行一个补充学习。

//根据图片获取图片的主色调
-(void)getSubjectColor:(void(^)(UIColor*))callBack {dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{// 第一步 先把图片缩小 加快计算速度. 但越小结果误差可能越大int bitmapInfo = kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedLast;CGSize thumbSize = CGSizeMake(40, 40);CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();CGContextRef context = CGBitmapContextCreate(NULL,thumbSize.width,thumbSize.height, 8, thumbSize.width*4, colorSpace,bitmapInfo);CGRect drawRect = CGRectMake(0, 0, thumbSize.width, thumbSize.height);CGContextDrawImage(context, drawRect, self.CGImage);CGColorSpaceRelease(colorSpace);// 第二步 取每个点的像素值unsigned char* data = CGBitmapContextGetData (context);if (data == NULL) {dispatch_async(dispatch_get_main_queue(), ^{callBack(nil);});};NSCountedSet* cls = [NSCountedSet setWithCapacity: thumbSize.width * thumbSize.height];for (int x = 0; x < thumbSize.width; x++) {for (int y = 0; y < thumbSize.height; y++) {int offset = 4 * (x * y);int red = data[offset];int green = data[offset + 1];int blue = data[offset + 2];int alpha =  data[offset + 3];// 过滤透明的、基本白色、基本黑色if (alpha > 0 && (red < 250 && green < 250 && blue < 250) && (red > 5 && green > 5 && blue > 5)) {NSArray *clr = @[@(red),@(green),@(blue),@(alpha)];[cls addObject:clr];}}}CGContextRelease(context);//第三步 找到出现次数最多的那个颜色NSEnumerator *enumerator = [cls objectEnumerator];NSArray *curColor = nil;NSArray *MaxColor = nil;NSUInteger MaxCount = 0;while ((curColor = [enumerator nextObject]) != nil){NSUInteger tmpCount = [cls countForObject:curColor];if ( tmpCount < MaxCount ) continue;MaxCount = tmpCount;MaxColor = curColor;}UIColor * subjectColor = [UIColor colorWithRed:([MaxColor[0] intValue]/255.0f) green:([MaxColor[1] intValue]/255.0f) blue:([MaxColor[2] intValue]/255.0f) alpha:([MaxColor[3] intValue]/255.0f)];dispatch_async(dispatch_get_main_queue(), ^{callBack(subjectColor);});});
}

将一些拓展部分的内容写在分类里

为了代码的一个高内聚的实现,我们会把一些相关实现的代码写在分类里面,这样让我们的代码更利于一个维护

小结

笔者这周因为金工实习浪费了很多时间,导致了这个项目的进展比较缓慢。笔者下周尽量完成这个项目的大致内容和以及完成相应的一个bug。

http://www.pjxw.cn/news/26401.html

相关文章:

  • 滕州网站建设制作seo网站关键词优化报价
  • 免费网站你懂我意思正能量软件上海seo顾问推推蛙
  • 转移网站如何转数据库中铁建设集团有限公司
  • tom企业邮箱网站的排名优化怎么做
  • 河北建站公司千峰培训出来好就业吗
  • 高水平的锦州网站建设seo推广代运营
  • 国内优秀的网站设计seo网络优化日常工作内容
  • 网站空间便宜百度一下官网页
  • 做新闻网站怎么赚钱北京seo薪资
  • 英文网站建设图片手机如何建立网站
  • 东铁匠营网站建设百度经验登录入口
  • 哪个网站可以做海报百度搜索大数据查询
  • 村委会网站源码 php360搜索引擎推广
  • 文学网站开发设计报告网站建设方案书模板
  • 泰州做房产的网站数据分析软件哪个最好用
  • 一起装修网官网杭州seo排名
  • 做网站需要哪些参考文献网络营销的渠道有哪些
  • 国外c2c平台seo网站排名厂商定制
  • 企业网上办事大厅seo用什么论坛引流
  • 网站开发设计有哪些电商网站商品页的优化目标是什么
  • vb.net 网站开发谷歌paypal官网登录入口
  • 哪个餐饮店微网站做的有特色百度关键词搜索怎么收费
  • 不做百度了 百度做的网站google chrome
  • 商业网站建设与运营百度浏览器主页网址
  • 可以做免费推广的网站有哪些你就知道首页
  • 百度免费收录提交入口长沙seo全网营销
  • 网上做任务赚钱网站免费网页代码大全
  • 找到做网站的公司毕业设计网站
  • 专注咖啡相关的网站平台推广渠道
  • 申请备案网站空间合肥百度推广优化排名