• 等级
  • 2117824 访问
  • 897 原创
  • 98 转发
  • 259 排名
  • 637 评论
  • 191 获赞

iOS科普一下根View及其子View中心点含义的坑

本文简单介绍了根View以及子View中心的含义。解答了为什么根View的直接子View可以用childView.center=parentView.center来设置中心,但childView的子View不可以这样做的原因。废话?中心什么意思!?的确,中心是什么意思,不是废话么?中心不就是中心么?不过严格来说,在iOS里view的中心(view.center)是其矩形中心点在其父...

2019-03-12 10:38:09

Swift派生与不派生自NSObject对象之间等于比较的不同

本文简单介绍了Swift中派生与不派生自NSObject的类,在等于比较时表现出的不同行为;还顺带讨论了创建大数组时效率的问题.等于或不等于我们知道对于数组的比较来说,实际比较的是它们中的每一个对应位置上元素.所以最终都是要比较对象的.我们还知道对于Swift中的类来说,要实现==操作符,需要遵守Equatable协议,并实现==方法.比如对于类A来说:classA:NSObje...

2019-02-21 11:06:36

简约同样简单:为UISlider添加显示当前值的标签(下)

本文在重构的基础上,从类封装的角度重新实现UISlider的功能扩展:显示当前的值,比之前更加简单和易于维护。建议在看完上篇之后再来观赏。上篇观赏在此:简约同样简单:为UISlider添加显示当前值的标签(上)为什么要重写?在上篇里我们已经实现了UISlider的扩展功能,已经可以用了,为什么还要费事再说这个事呢?原因是:它的封装性不足,对外太开放。举个栗子:UISlider上...

2019-01-29 14:22:09

简约同样简单:为UISlider添加显示当前值的标签(上)

本文畅想了几种为UISlider添加显示当前值的方法,并选择了其中一个稳定,简单的实现.适合iOS刚入门或中级水平的童鞋们观赏.看不见值?这不科学!默认的UISlider,你可以任意拖动,却看不见当前表示的值…有点盲人摸象的赶脚了…我们一般的做法是用另一个控件表示其当前值,比如一个UILabel.不过这样貌似要另外占用一些空间,不紧凑!看到UISlider上面那个圆圆的把手了么?我...

2019-01-27 13:35:26

吐槽一下Xcode中的Playground

本文对playground的优缺点做了一个阐述,并将其与Ruby中的irb做了比较,主要是想借机抒发一下作者想怼Ta的美好心情出发点苹果的初衷很好,做一个可以快速实验原型的平台.对一些简单的想法,可以来快速印证.我不知道你们用不用,反正我用playground还是蛮多的.除了常规的测试外,还可以实验线程和GUI相关的代码,不过需要做点调整…抓狂点神马?没有优点么?优点就是出发点...

2019-01-19 09:30:55

乱弹:Swift单复共体参数类型---与Ruby相比不那么优雅的实现

本文提出单复共体参数的一种实现,同时比较了Ruby中的实现,后者显然更加优雅。适合对Swift语言本身有兴趣,喜欢纠结语法,而且了解其他动态语言的童鞋观看。什么是单复共体参数?这是我发明的词…很简单,就是对于同一类型的对象,既可以传递它的单数形式又可以传递它的复数形式作为方法的参数。还是一头雾水???举个栗子://display(...)是一个方法,现在还不知道它的原型应该怎么写,...

2019-01-06 12:54:34

CoreData中访问托管对象的NSSet关系属性导致崩溃的解决

本文介绍了再少数情况下,当访问CoreData托管对象中的NSSet关系属性引起App崩溃的现象以及解决.现象在访问托管对象的traces关系属性时,App崩溃,提示:***Terminatingappduetouncaughtexception'NSInvalidArgumentException',reason:'***-[NSMutableSetunionSe...

2018-12-31 19:56:35

化繁为简:Swift剔除数组中重复元素的几种姿势

本文向大家介绍稍许算法的实现:关于如何去除数组中的重复元素,并比较了两种算法之间的效率.全部代码在Xcode的Playground中实现,直观明了,适合Swift学习入门童鞋观赏.有个前提如题,很多童鞋立即给出解决方法,无外乎是利用Swift内置的集合(Set)或字典(Dict)的一个特性:过滤重复元素.但由于集合和字典中元素的顺序是无法保证的,所以这建立在一个前提基础之上:结果数组元素...

2018-12-27 17:23:48

iOS使用动画连贯过渡界面转换

本博向大家演示如何通过添加动画,为原有界面元素变换增加连贯的过渡效果.为UI代码一丝动态与活力感.缘起第三方的一个图片裁剪器,拿过来做了几点修改:将其封装到动态库中,方便集成扩充了一些功能,比如等待菊花和是否允许进行裁剪等用封装好的动态库创建了一个ImageCropRow类,这样就可以在Eureka中方便的使用了大致就是如此,细节不必深究,现在的效果是这个样子的:总体符合本...

2018-12-22 13:02:23

一招搞定Xcode错误日志显示use -v to see invocation的问题

本博向大家展示了当Xcode出错信息匮乏,完全不知所云时,如何找到真正的错误原因的方法。简单有效,你值得拥有。抽风的Xcode?极少数情况下,Xcode编译出错的信息完全让人摸不着头脑,比如下面一段:<unknown>:0:error:merge-modulecommandfailedwithexitcode1(use-vtoseeinvocatio...

2018-12-20 21:11:13

Swift调用协议扩展导致崩溃的解决

本博向大家介绍Swift对象委托的一种变通方法,但遗憾的是该方法在Swift4.2中会导致App崩溃,生活还要继续,且看本猫如何解决它喽.什么是对象委托简单的说对象委托就是对象A假装对象B,当然A和B的类完全不同.用过Ruby的童鞋都知道,这很容易完成:ClassAccount<ActiveRecord::Basedelegate:firstnam...

2018-12-19 10:36:25

Swift中集合(Set)无法删除自身对象的临时解决方法

这是本猫遇到的比较怪异的问题之一:明明在集合中的对象,但却无法直接删除它。由于原项目较为复杂,为了演示目的,本猫对博文示例代码做了简化,但并不影响问题的表述。背景介绍App逻辑很简单,对象Node对应着TableView中每一行,你不用知道Node对象到底是啥,你只要知道它是列表每一行后面的那个数据对象:classNode:Equatable{ varnodeId:Int va...

2018-12-15 16:52:50

Xcode真机运行App行为怪异且断点无法触发的解决

系统环境MacOS10.12.64GBMBA,编译环境Xcode9.2Swift4.1问题现象在模拟器上编译运行一切正常,但在真机上编译运行时发现某一个界面显示方法总是返回错误的内容。关键是在该方法上下断点竟然无法触发,是的,我100%肯定会调用该方法!!!重启真机,删除App重新安装无效!因为界面是显示数据库中对应的内容,索性重新从云中还原模拟器中备份的数据,可是在...

2018-12-12 21:53:09

iOS一步步妆点动画使界面元素迸发新活力

本博在iOS原有静态界面的基础上,一步步尝试使用动画来突出选择动作,使原来呆板的元素瞬间鲜活了许多,为用户打造活力满满的界面。没有动画的世界原来的界面很简单,用户通过段选择器(UISegmentedControl)来选择切换两个不同的UILabel,如下所示:由上至下两个UILabel为curFromDateLbl和curToDateLbl,分别代表起始日期和结束日期,我专门写了一个方...

2018-12-05 14:07:59

iOS解决控制器转场和返场界面卡顿的一种方法

本博介绍了在控制器转场和返场时界面发生卡顿的一种解决方法,主要思想是使用视图快照功能来提供一个静态的伪视图以提高性能.转场和返场转场是指从控制器A切换到控制器B中,这意味着控制器A被隐藏:控制器A->控制器B而返场是指从控制器B切换回控制器A,这意味着控制器A重新被显示:控制器B->控制器A为什么会卡顿?如果在控制器转场或返场时需要播放复杂的转场动画或者在...

2018-12-02 16:33:41

iOS:UITableViewCell中Label位置无法正确约束的问题

由于UITableView中某一行文字过多,需要扩展Cell的高度,该Cell的样式是.subtitle:注意其中的detailTextLabel并没有垂直居中!!!咋一看解决应该很简单,做一个约束不就行了:$0.cell.detailTextLabel?.snp.updateConstraints{makein make.centerY.equalToSuperview()...

2018-12-01 09:40:47

Swift中由找不到removeAll(where:)方法引起的连锁反应(下)

提示:本篇博文涉及到第三方库Eureka,但核心思想在于Swift内部数据处理的推断,不了解Eureka并不影响对本文的理解。Eureka只不过是对UITableView的便捷包装而已,需要进一步了解Eureka的童鞋可以观赏本猫Eureka学习系列博文。上篇在此:Swift中由找不到removeAll(where:)方法引起的连锁反应(上)化繁为简,以管窥豹为了能够明白为什么rem...

2018-11-29 12:25:13

从App随机崩溃(KVO_IS_RETAINING_ALL_OBSERVERS...)到彻底修复的回顾(上)

本博通过具体的实例向大家展示如何一步步通过合(xia)理(cai)分析找出问题的罪魁祸首,适合有一定调试经验的童鞋,也欢迎各路神仙和小白围观,本人水平一般,欢迎指正,但我就是不改.崩溃特征0.崩溃的类型是EXC_BAD_ACCESS1.App崩溃虽说是随机的,但在一定次数的相同UI操作后必定会发生,但操作的次数不固定。2.从Xcode里观察崩溃时的源代码,"按道理"完全

2018-11-27 11:06:53

Swift中由找不到removeAll(where:)方法引起的连锁反应(上)

提示:本篇博文涉及到第三方库Eureka,但核心思想在于Swift内部数据处理的推断,不了解Eureka并不影响对本文的理解。Eureka只不过是对UITableView的便捷包装而已,需要进一步了解Eureka的童鞋可以观赏本猫Eureka学习系列博文。核心代码section.removeAll{baseRowiniflethabitRow=baseRowas?...

2018-11-23 07:42:04

更仔细些:让你看懂Xcode链接错误提示

修改了代码里一个地方,编译都过不去,Xcode提示如下:注意,只是链接器报错,但并未定位到实际代码的某一行里!!!一般来说这个问题往往是因为代码对象.o文件和实际不一致导致,我们需要删除App文件或.o,文件确保其重新生成即可。但在这里却又不一样…因为检查.o文件名,并不在一个库中!仔细查看详细错误信息:如上,翻译过来就是:MainTabBarViewController.o里...

2018-11-18 15:10:42

博客专家

大熊猫侯佩

贪吃贪睡的大熊猫侯佩 | 侯佩,偶滴神啊!
关注
  • 天下第一宅猫猪
  • 中国 安徽省 合肥市
奖章
  • 红花
  • 黄花
  • 蓝花
  • 博客专家
  • 专栏达人
  • 持之以恒
  • 热心人