【iOS】—— 仿写知乎日报第一周总结

news2024/11/20 21:35:40

目录

    • 知乎日报第一周完成情况
    • 遇到的问题:
      • 1.线程问题:
      • 2.SDWebImage加载图片
      • 3.实现无限刷新界面
      • 4.点击主界面cell进入后的界面

知乎日报第一周完成情况

在这周开始了仿写知乎日报的任务,在第一周里,我完成了主界面,以及滚动视图的点击和个人界面,在滚动视图的点击中还有一些bug,正在修改。

请添加图片描述

请添加图片描述
请添加图片描述

遇到的问题:

1.线程问题:

在之前用MVC写项目的时候并没有用到网络请求,在这次用到网络请求的时候,网络请求的过程放在Controller里面,当请求完成之后要将请求来的东西传值到View里对View的控件进行赋值。而此时view里的viewInit函数已经运行,UI已经布局,所以会显示白板,但是如果在网络请求完成之后再让viewInit加载,又会遇到线程问题导致程序崩溃,为了解决这个问题,用到了一个新的方法。

        //回到主线程
        dispatch_async(dispatch_get_main_queue(), ^{
            [self viewInit];
        });

2.SDWebImage加载图片

图片和文字的网络请求不同,文字请求来可以直接进行赋值,图片请求到的是一个网址,直接赋值的话检测不到东西,这时候就要从cocoapods里导入新的库SDWebImage,导入之后学习图片的方法即可。

[cell.mainImageView sd_setImageWithURL:[NSURL URLWithString:[_oldNewsArray[indexPath.row / 7][@"stories"][indexPath.row % 7 - 1][@"images"][0] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]]];

3.实现无限刷新界面

请添加图片描述

首先无限刷新就一定会遇到小菊花这个控件,在暑假前学习过这个控件的用法,复习一下即可

        _activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleLarge];
        _activityIndicatorView.backgroundColor = [UIColor whiteColor];
        //启动动画显示
        [_activityIndicatorView startAnimating];
        //停止等待对话框
        //[_activityIndicatorView stopAnimating];
        [cell addSubview: _activityIndicatorView];
        _activityIndicatorView.frame = CGRectMake(SIZE_WIDTH / 2 - 8, 25, 15, 15);

然后时如何进行实时的刷新呢,我的判断方法是通过下面的方法来判断,停止拖动之后,如果屏幕超出该有的位置,就让小菊花转动起来,此时传值给Controller,提醒它网络请求,请求完成后再将请求到的值传回来,传回来之后刷新tableView即可,这个过程同样需要注意线程问题。

//停止拖动
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {

}

4.点击主界面cell进入后的界面

此界面的主要内容并不需要我们去完成,学习一下WKWebView的用法,将请求到的url传给它即可,具体可参考大佬博客
iOS (一) - UIWebView 与 WKWebView . 基本使用

同时,这个界面是需要左右滑动的,因此WKWebView是要加在Scrollview上的,要注意加在scrollview上的东西不能用Masonry框架,否则显示不出来,如果非要用Masonry的话,需要加一个View,将ScrollView的东西都放在View上,然后再把View加在ScrollView上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/259.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新人入手mac折腾过程中遇到的解决方案

本文将长期更新,以记录个人的使用。 终端美化 …还没有美化完,不过推荐看这篇文章Mac终端美化指南 homebrew homebrew是Mac OS X上的强大的包管理工具,可以高效管理各种软件包,官方说法是:The missing package mana…

ArcGIS:如何新建图层组并添加数据、切换数据视图和布局视图、修改符号系统?

目录 01 如何新建图层组? 02 如何在图层组中添加数据 03 如何切换数据视图和布局视图 03 如何修改符号系统? 3.1 如何快捷的修改一下符号样式? 3.2 如何修改符号系统的色带 3.2.1 色带视图的取消 3.3 修改符号系统中的标注显示 3.4 如…

大气湍流退化图像复原技术研究及DSP实现

目录 第一章 绪论 1 1.1 研究背景 1 1.2 国内外研究现状 1 1.3 本文的研究内容 5 1.4 本文的组织结构 5 第二章 大气湍流退化图像复原技术 7 2.1 图像退化及复原数学模型概述 7 2.1.1 图像退化的数学模型 7 2.1.2 图像复原的数学模型 8 2.2 大气湍流退化图像概述 9 2.2.1 大气…

插件内存分析

rtspsrc 1. 当pipleline为rtspsrc加其他插件时,如果让其他插件卡主会发生什么事情呢?以rtspsrcfakesink为例(gst-launch-1.0.exe rtspsrc locationrtsp://xxx ! fakesink),修改fakesink的代码,让render中…

基于SSM的图书馆阅览室预约管理系统,高质量论文范例,可直接参考使用,附送源码、数据库脚本

目录 1.项目技术栈 2.适合对象 3.适合课题 4.项目功能概述 4.1 项目功能汇总 4.2 项目功能介绍 5. 高质量论文范例 6. 毕业设计撰写视频教程 6.部分运行截图 1.项目技术栈 前端必学三个基础,"HTML、CSS、JS",基本每个B/S架构项目都要…

C++【搜索二叉树】

目录 一、什么是搜索二叉树 二、搜索二叉树如何删除数据 删除的是叶子结点的情况 删除的结点下面仅有一个子节点(托孤)(要删除的结点只有一个孩子) 替换法删除 (要删除的结点有两个个孩子) 三、写一…

腾讯前辈熬夜肝了一个月整理的《Linux内核学习笔记》,啃完受益匪浅不走弯路

小编热衷于收集整理资源,记录踩坑到爬坑的过程。希望能把自己所学,实际工作中使用的技术、学习方法、心得及踩过的一些坑,记录下来。也希望想做Linux内核高级工程师的你一样,通过我的分享可以少走一些弯路,可以形成一套…

【数据结构】常见七大排序总结

目录 一、插入排序:直接插入排序【稳定排序方法】 二、插入排序:希尔排序【不稳定排序方法】 三、选择排序:直接选择排序【不稳定排序方法】 四、选择排序:堆排序【不稳定排序方法】 五、交换排序:冒泡排序【稳定…

基于单片机MC9S12XS128的两轮自平衡小车设计

目 录 1.绪论 1 1.1研究背景与意义 1 1.2两轮自平衡车的关键技术 2 1.2.1系统设计 2 1.2.2数学建模 2 1.2.3姿态检测系统 2 1.2.4控制算法 3 1.3本文主要研究目标与内容 3 1.4论文章节安排 3 2.系统原理分析 5 2.1控制系统要求分析 5 2.2平衡控制原理分析 5 2.3自平衡小车数学…

总结一下flex布局

flex布局 传统布局方案是基于盒状模型,依赖 display position float 方式来实现,灵活性较差;Flex是Flexible Box的缩写,意为”弹性布局”。Flex可以简便、完整、响应式地实现多种页面布局 CSS3 弹性盒子是一种一维的布局&…

[Spring MVC3]MyBatis详解

本章重点讲述了MyBatis映射器,对数据层进行的操作,建议本篇文章和Spring Boot的持久层相互比较来看会更加收获颇多Spring Boot持久层技术 本文需要使用到MVC第一讲的模板格式与配置情况,全部代码已经放在此博客中,Spring MVC1 目…

修改设备管理器的COM端口名称

Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class{4d36e978-e325-11ce-bfc1-08002be10318}\0001] “InfPath”“oem53.inf” “InfSection”“CH341SER_Inst.NTamd64” “ProviderName”“wch.cn” “DriverDateData”hex:00,00…

计算机算法(二)——进入计算机世界

作者介绍: 📞作者:小刘在C站 📀每天分享课堂笔记 🌹夕阳下,是最美的绽放 瑞士著名的科学家Niklaus Wirth教授曾提出:数据结构算法程序。 数据结构是程序的骨 算法是程序的灵魂。 在生活…

【 C++11 】lambda表达式

目录 1、lambda表达式的引入 2、lambda表达式 lambda表达式的语法 lambda表达式捕捉列表说明 使用lambda表达式排序自定义类型 lambda表达式的底层原理 1、lambda表达式的引入 在C98中,如果想要对一个数据集合中的元素进行排序,可以使用std::sort方法&…

asp.net图书馆借阅归还系统

图书管理系统既是完整的知识定位系统,又是面向未来互联网发展的信息管理模式。图书管理系统,是一套利用计算机信息网络技术,实现对引用、注释和参考图书的自动化处理和规范化管理,服务于教师,学生及各类科研人员的集成…

【C语言进阶考试】你是否真正学懂了C语言

目录 前言 🎒选择题【全面深度剖析】 📗考点一:无符号数unsigned的理解与应用 📕考点二:字符ASCII计算与转换的理解和应用 📙考点三:对位操作符的理解与应用 📘考点四&#xf…

docker mysql 主从配置

准备:一台装有docker的虚拟机或者服务器 拉取mysql镜像: docker pull mysql:5.6 启动两个mysql容器 master docker run -p 1006:3306 --name mysql_master -v F:/mysql/mysql_master/conf:/etc/mysql -v F:/mysql/mysql_master/logs:/logs -v F:/mys…

【1024 | 程序员节】浅谈前端开发中常用的设计模式——适配器模式、工厂模式、单例模式等

前言 博主主页👉🏻蜡笔雏田学代码 专栏链接👉🏻【前端面试专栏】 今天学习前端面试题相关的知识! 感兴趣的小伙伴一起来看看吧~🤞 文章目录设计模式设计模式分类工厂模式什么是工厂模式工厂模式好处单例模式…

I2C知识大全系列三 —— I2C驱动之单片机中的I2C

两种方式 单片机中的I2C驱动有两种方式。一种方式是用专用硬件I2C控制器实现,这种方式简单易行,品质也容易控制,只是会增加硬件成本方面的压力。另一种方式是用纯软件方式实现,这种方式几乎无硬件成本方面的考虑。 主要对比&…

网页图片采集-网页图片采集软件免费

一款免费的网页图片采集软件可以采集网页上的各种图片,每个人都可以采集到各种高清图源。支持任意格式的图片采集,只需要导入链接即可批量采集图片。 还有更多的采集方式:输入关键词全网图片采集/任意网站所有图片采集!不仅可以采…