- 博客(21)
- 收藏
- 关注
原创 详解SwiftUI数据流是怎么在View间传递的
作为一个声明式的UI框架,SwiftUI帮我们处理了几乎所有关于UI和数据之间的交互,这使我们不再需要关注数据变化时刷新UI和用户交互以后更新数据的逻辑。为了实现数据和UI的绑定,我们需要利用Swift的一些关属性包装器来向SwiftUI描述它们之间的关系,那么让我们开始吧。到公众号【iOS开发栈】学习更多SwiftUI、iOS开发相关内容。State Properties @State在前面的一篇文章中当我们给数组添加或者删除元素时,列表会自动响应变化,正是因为使用了@State.
2021-02-05 12:44:35
2075
原创 学习SwiftUI,必须掌握的3个知识点
在WWDC2019中,iOS引入了一个全新的UI框架——SwiftUI。它的目的是通过全新的设计思想来解决iPhone、iPad、Mac的界面统一,以便开发者可以通过一次学习多处使用(Learn Once, Use anywhere)。从iOS13开始我们就可以使用这个全新的框架了,iOS开发者应该尽快掌握它。到公众号【iOS开发栈】学习更多SwiftUI、iOS开发相关内容ViewSwiftUI中一切皆View,不论是我们熟悉的Button还是backgroundColor,甚至Color.re
2021-01-29 22:32:20
274
原创 关于视图声明周期和通知
情景还原:viewController中有一个tableView,tableView的initWithFrame方法中接受一个通知中心的通知,在tableView的dealloc方法中释放这个通知。问题:这样做会出现名为[xxxx _clearRecordedScrollView]。。。的不必现crash。解决方法:在viewController的dealloc方法中释放tableView
2015-05-08 13:50:10
455
原创 使用zbar进行二维码或条形码(一维码)扫描
接上篇,因为使用AVFoundation一直无法扫描我们的二维码,最后决定使用条形码。我又在AVCaptureMetadataOutput的metadataObjectTypes中加入了EAN13的条形码类型(我们生成条形码使用的类型),不幸的是,还是无法识别,但是,百度其他的EAN13类型的条形码都可以识别出来,此问题仍未解决。最后,我决定试一下ZBar,bingo!效率挺高。下面介绍一下z
2015-05-08 11:39:21
4110
原创 使用AVFoundation完成二维码扫描
其中有几点需要注意的1.应该使用异步线程来配置那几个属性,这样可以防止阻塞主线程加载UI。2.output的rectOfInterst是感应区域,就是说,在这个区域内才有扫描效果。但是由于摄像头的关系,这个rect的x和y是反着的,width和height也是反着的,就是说,这里的x坐标对应着正常情况下的y坐标,这里的宽度对应着正常情况下的高度。3.sessionPreset属性是用来
2015-05-04 09:33:14
1796
原创 关于iOS开发过程中单元测试的一点拙见
本人比较小白,从来没有接触过单元测试的问题。 近两天用几个小时查阅了一些单元测试有关的知识,发现大家大多数都在说怎么讲写测试用例的用处或者怎么建测试用例,但是,我一直没有找到关于什么是测试用例的文章,而且那些讲怎么创建测试用例的文章也没有讲清楚到底要怎么使用,本人在这里分享一下自己对单元测试的理解,希望看到的伙伴能够及时批评指正: 1.测试用例是什么? 刚开始看到的文章大多都是建立在X
2015-04-01 15:09:10
749
原创 UITableView右滑删除
主要是实现下面这个方法:- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {}
2015-03-24 17:16:50
439
原创 Xcode工程改名
最近做项目用到了以前的工程,就是在之前工程的基础上,经过修改完成新工程。整个过程需要下面几步:1.把这里的名字改了2.把这里的名字改了3.右击“原工程”文件夹,从Finder中打开,在Finder中改变名字,从这个小文件夹找到刚才那个被改名的文件夹,建立连接。同上,改变这个文件夹的名字(保留“Tests”)4.分别改变两个Info.plist文件中的工程名字,把这两个plist中B
2015-03-24 09:38:07
1018
原创 cell自动选择第一行,并且点击后成为第一行
自动选择第一行,最好在viewController的viewDidAppear里面做,代码如下在cell复用时也可以做,但是需要防止cell的复用问题。在VC的viewWillAppear和viewDidLoad里做没有效果,其他位置我没有试。 把选中的cell,置为第一行,代码如下:
2015-01-28 15:17:20
455
原创 类似于QQ的聊天记录的侧滑删除功能
实现类似QQ的侧滑删除,并且在点击tableView的其他地方的时候,可以把拖出来的cell还原回去。 个人感觉这个功能的重点是怎么点击tableView的时候,把拉出来的cell还原回去。 首先,在tableView上添加tap手势的时候,tableView会优先相应tap,但是,当你长按一个cell的时候,会执行didSelect的回调,并且,tap并不会影响cell内的按钮的动作
2015-01-27 17:32:41
852
原创 使用EGORefreshTableHeaderView进行下拉刷新
之前用EGO进行下拉刷新,都是照着别人的代码在做,昨天独立用EGO完成了下拉刷新的功能,在这里记一下心得吧。 个人感觉,使用EGO的时候,最好去EGORefreshTableHeaderView.m里面看一下,你会发现你会发现只有你调用了这两个方法的时候,EGO的代理方法才会被调用,所以,需要实现这两个方法,并且,在使用EGO的页面中,必须要有一个成员变量表示是否正在刷新(比如_relo
2014-12-23 08:58:40
699
原创 关于在storyboard中使用自己创建的控件
昨天在使用storyboard时,想要使用自己的一个textField,就是要在系统的textField上添加一个用来动态显示文字的label。我想要把这个textField单独封装到一个类里,可是无论如何都无法进到我封装的那个类里,后来,几经周折,终于找到了。storyboard在加载自定义的控件时,会进入initWithCoder这个方法
2014-12-05 10:54:09
575
原创 Cannot find executable for CFBundle
我在storyboard上拖进去一个tableView,在8.1的模拟器上能够正常显示,但是在7.1的模拟器上就不能显示后来我又测试了其他的控件,发现,label和button等可以正常显示,但是imageView和tableView不能正常显示我就去百度Cannot find executable for CFBundle这个问题,大多数的回答都是说reset了模拟器,我reset了几次
2014-12-04 10:19:12
654
原创 swift入门基础知识5字典
与数组很相似,swift中的字典中的键和值,分别只能是一种特定的数据类型,并且,键和值都可以是基本数据类型字典中的values和keys并不是Array类型的,而是swift中一种特定的数据类型,但是如果我们需要用到values或者keys可以通过强转把他们转成Array类型
2014-11-27 09:27:53
427
原创 swift入门基础知识4数组
与OC中的数组相比,在swift中,一个数组只能存储一种特定的数据类型,并且swift中的数组可以直接存储基本数据类型,还有一些操作需要我们注意一下,具体内容在下面呈现出来
2014-11-27 09:20:09
365
原创 swift入门基础知识3字符串
swift中的字符串和OC中的有很多相似之处,但是,细看之下,还有有一些改进的,这篇文章,主要就是介绍swift中的字符串和OC的区别
2014-11-27 09:13:35
424
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人