上午+昨晚

本来昨晚要跟新的,但是由于调试bug弄太晚了,都凌晨4点了,就没记录,今天来记录

先看看最新效果(做的比较慢)

效果如下图!

思路:

  • 先查看了下APP的组成,发现有好几个页面都有最上面的滚动条,而且整体效果相似,可以将这个提出来做为一个基类,让其他页面直接继承就可以了!这个思路也是以前在网上看到有人这样写过想到的!O O
  • 滚动条为UIScrollView + Button
  • 下面的TableView是放在UICollection里的,因为看到安卓手机上的界面可以左右滑动(苹果的木有),所以打算用UIcollection来实现这个左右滑的效果
  • 滚动条上的文字放大效果直接使用transform属性设置缩放比例即可制作
  • 点击button让其显示在正中的效果是改变ScrollView的Offset实现,并不是修改button的位置

注意点:

  • 创建UIcollection的时候,要注意设置frame,刚开始我设置frame是

    collection = [[UICollectionView alloc] initWithFrame:self.view.bounds collectionViewLayout:flowLayout];

    这样会导致UIcollection在左右滑动的时候分页效果是按width = 600 来分页的!所以直接写成了

    collection = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, Main_Screen_Width, Main_Screen_Height) collectionViewLayout:flowLayout];

    这样就正常了.

  • 滑动UIcollection的时候要改变上面的滚动条button,这里要注意数组越界的问题,主要是在最后一个button!注意NSInteger next = last + 1这里,千万千万不能顺手写成last++,刚开始我就是写成了last++,导致了last自增越界
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView {//上一个btnNSInteger last = scrollView.contentOffset.x / Main_Screen_Width;//下一个btnNSInteger next = last + 1;UIButton *lastBtn = _titleBtns[last];UIButton *nextBtn = nil;//防止数组越界,如果点到最后一个,不判断会越界if (next < self.titleBtns.count) {nextBtn = _titleBtns[next];}//设置文字大小缩放lastBtn.transform = CGAffineTransformMakeScale(1.2, 1.2);nextBtn.transform = CGAffineTransformMakeScale(1, 1);//改变按钮颜色
        [lastBtn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];[nextBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    }

  • 创建UIcollection的时候添加子控制器一定要先移除以前的子控制器,在添加新的子控制器
    - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];//移除以前的子控制器
        [cell.contentView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];//把对应的子控制器取出并设置大小UIViewController *ctr = self.childViewControllers[indexPath.row];
    //    ctr.view.bounds = Main_Screen_Bounds;ctr.view.frame = CGRectMake(0, 0, Main_Screen_Width, Main_Screen_Height);//将新的子控制器加到contentView上
        [cell.contentView addSubview:ctr.view];return cell;
    }

  • 让button设置在正中的办法
    - (void)changeBtnState:(UIButton *)btn {//设置量进行还原_selectedBtn.transform = CGAffineTransformIdentity;//btn颜色改变
        [_selectedBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];//让选中的btn在显示在屏幕正中(是偏移的ScrollView)CGFloat offsetX = btn.center.x - Main_Screen_Width * 0.5;//表明还没有产生偏移量,点的btn还是1/2左边的if (offsetX < 0) {offsetX = 0;}//最大的偏移量,已经到了最右边超过了1/2,直接设置为最大偏移量CGFloat maxOffsetX = _topScrollView.contentSize.width - Main_Screen_Width;if (offsetX > maxOffsetX) {offsetX = maxOffsetX;}//改变ScrollView偏移量[_topScrollView setContentOffset:CGPointMake(offsetX, 0) animated:YES];//btn的文字缩放btn.transform = CGAffineTransformMakeScale(1.2, 1.2);//改变btn为selected_selectedBtn = btn;
    }

以上是昨晚+今天上午的东西!下午继续.以上有些思路也是看了点别人的代码找到的思路!感谢开源.


下午

下午打算写一下数据的东西,我的数据不打算使用API文档,打算用青花瓷(Charles)自己抓

下面说一下我抓数据的过程(我对青花瓷也不是特别熟悉,也是照着教程自己捉摸着抓)打开青花瓷

  1. 打开青花瓷等待
  2. 打开手机,在wifi连接下方的HTTP代理处设置电脑的IP,端口8888
  3. 然后青花瓷会弹出一个对话框,选择allow,忘截图了.

  4. 然后打开App刷新数据,青花瓷就会有数据了
  5. 根据json来写对应的Model

转载于:https://www.cnblogs.com/YxY-YxY/p/5649679.html

百思不得姐(第三天)相关推荐

  1. 百思不得姐之广告界面(三)

    一 概述和总体功能图 1 广告界面的意思: 当用户点击启动一个app的时候,app并不会马上显示到主框架,而是先在屏幕中加载一张图片,而这张图片就称之为广告.由于图片是从服务器中请求的,所以每次启动a ...

  2. 微信小程序实战之百思不得姐精简版

    为什么80%的码农都做不了架构师?>>>    微信小程序基本组件和API已撸完,总归要回到正题的,花了大半天时间做了个精简版的百思不得姐,包括段子,图片,音频,视频,四个模块.这篇 ...

  3. iOS App 百思不得姐

    项目介绍 仿照百思不得姐,通过看视频学习自己实践并简单总结项目开发过程中普遍遇到的问题,并且将可以用到其他项目中的分类方法进行简单总结,便于以后在别的项目中使用. 每天任务 1. 实现相应功能 2. ...

  4. 百思不得姐数据刷新数据部分(七)

    一 刷新功能图和内部计算原理图 1 刷新功能图: 2 内部计算原理图 二 解析步骤 1 分析整个精华模块 2 真实数据请求部分 3 模型 4 先添加尾部刷新控件 5 再添加头部刷新控件 6 处理刷新业 ...

  5. 百思不得姐框架(一)

    一 框架效果图和原理图 1 框架的效果图: 2 根据总体的app的效果图,我们总结了采用的方案是: --> 采用主流的框架来搭建. 搭建效果图: 3 采用纯代码的形式来搭建框架(下面是设置窗口部 ...

  6. 百思不得姐之我的模块功能(六)

    一 功能图和知识点 1 功能图部分:(由于网速的原因,网页部分没有加载出来,但是功能完好) 2 该部分能学到的知识点概括: >1 UITableView的使用(简单) >2 UIColle ...

  7. 百思不得姐之图片处理(保存与下载)

    一 功能图 二 讲解思路 1 回顾上一篇内容 2 创建加载图片类(同时创建xib) 3 点击图片查看大图 4 点击查看大图(查看长图) 5 model出展示图片的控制器 6 保存图片 7 封装根据网络 ...

  8. 仿百思不得姐App客户端

    本系列总结开发一个仿百思不得姐App客户端. 一.准备过程 下载最新Android版百思不得姐App的Apk,使用反编译工具AndroidKiller获得项目需要的资源文件. 项目模块化为:精华模块. ...

  9. 伍六七带你学算法 进阶篇-三数之和

    三数之和 难度-中等 题目:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组. 注意 ...

最新文章

  1. JavaScript 技术篇-js代码获取当前操作系统信息、浏览器版本信息实例演示,windows NT版本对照表
  2. java web右键菜单,win7右键菜单管理
  3. Number of Components
  4. 软件工程-pair work
  5. Ruby on Rails:控制器纵览
  6. idea怎么看sql执行打印_SQL查找是否quot;存在quot;,别再count了,很耗费时间的
  7. DNS 错误事件4000 4013
  8. 1218 鼠标样式 cursor
  9. js map 只输出key_Vue.js轮播库热门精选
  10. linux proc sys,对/proc和/sys的一些理解
  11. 分层精品优秀电商海报模版|无需数量多,胜在精
  12. 饥荒联机版服务器重置,饥荒联机版服务器重置世界 | 手游网游页游攻略大全
  13. 贪心科技机器学习训练营(四)
  14. HDOJ 2856 How far away ?
  15. 克里希纳驼奶粉食疗可养生?
  16. pip换源工具pqi
  17. kaggle上面的E-Commerce Data数据集练习(可视化与部分特征工程)
  18. vue项目中swiper动态更新后无法轮播问题 附带案例代码
  19. 如何打开.pdm文件(Mac OS X)
  20. 从今天起用2个月时间,学好PYTHON

热门文章

  1. ata考证和计算机一级b,ATA
  2. 计算机中减法英语,计算机中加减乘除叫什么键
  3. Arduino练习三——PWM 调控灯光亮度实验
  4. 深度学习_GAN_GAN优化训练方法汇总(全网最全,持续更新)
  5. 什么影响伦敦金实时行情?
  6. 利用ffmpeg对视频进行处理,比如截取图片作为缩略图
  7. jzoj 3948 Hanoi 塔
  8. 有趣的题目:简单深搜之数独与靶型数独--二进制状压加速与dfs数独剪枝
  9. fatal error C1075
  10. Netty作为服务端的websocket通信