AutoLayout自适应label出现的问题
我在做最近一个项目,自适应label的时候,总是出现一个问题: 这让我很是郁闷,而且只有在6和6p上出现,开始我以为是我自适应的方式不对,但是重写了几遍之后,发现我没写错。。。。问题在哪,始终找不到. 今天在群里看到一小伙伴发关于自适应label的代码,求教了一下,然后找到了这个VerticallyAlignedLabel,然后兴高采烈的尝试,以为终于要解决了,结果发现,确实是向上对齐了,但是多余的部分还在; 那么问题是在哪?然后我就找啊找啊,然后我发现了这个Multiline UILabel height with Autolayout higher in landscape, stackoverflow上的问题,之前我一直搜中文,但是,搜不出来,换英文之后,终于有相似的问题出现了,我就说,肯定不止我一个人遇到(这么蠢😢),然后还有这个objc.io也出现了Intrinsic Content Size of Multi-Line Text, 然后我打算照着他们的方法修改; 他大爷的,我都没办法直接用他们的方法,因为我把view摘出来了,而且还是tableViewc...
动画效果:snapshotViewAfterScreenUpdates的使用
动画动画:复杂动画的实现:首先要拆分,明确你自己要实现的效果是什么,然后开始拆分,第一步实现什么,然后实现什么…,怎么样链接起来。把复杂的动画拆分成一个个小步骤,然后一步步实现就可以了。 snapshotViewAfterScreenUpdates(_:) 这个方法我在做拖拽tableView的item的时候(eg: SystemPreference)看到的,感觉用来做动画很好用。相当于截个图,然后拿着这个截图,实现各种动画效果。eg: 如果你是一个电商项目,将商品加入购物车,这个动画就可以用这个来实现(Ps:我记得京东还是淘宝久有这个效果,但是我却又找不到了),点击加入购物车,然后对商品生成一个快照,然后缩小移动到购物车(还可以加入旋转的动画),到购物车的位置,移除。Perfect! 我做的这个项目,读信的过程就是用这个效果实现,点击信封,然后生成快照,然后快照位移到屏幕中间,消失,然后信封详情出现。 实现 首先,定义动画效果的实现: 查看信件:a. 点击信件,然后生成信件快照; b.信件快照位移到屏幕中央;同时信件详情出现,信件快照消失; 关闭详情:a...
lib(a)导致的duplicate-symbol的问题
lib(a)导致的duplicate-symbol的问题链接: iOS lib(.a)库冲突解决办法 iOS 两个静态库存在同名文件冲突解决方案 说明 首先你要确定是这个类型的错误 然后开始,可以按照第一个链接进行修改,也可以看下面 在引入第三方lib(.a)库时,经常会由于第三方lib库中又引入同你现有工程相同的开源代码而造成.o冲突 依次查看lib库所支持的框架类型。i386:模拟器;armv7:iphone4;armv7s:iphone5,iphone5s;arm64:iphone6,iphone6p。 首先,将冲突的那个.a文件单独拷贝到一个文件夹,然后用命令行进入到那个文件夹 查看lib库支持的框架类型,注意下面的lib.a或者libRyFitLibrary.a是我出错的.a文件 12admin-imac:testlib admin$ lipo -info lib.a 2 Architectures in the fat file: lib.a are: armv7armv7s arm64 3 admin-imac:testlib admin$ fa...
MagicalRecord的使用
创建数据库1. 首先分析清楚自己需要什么 我的目的是要缓存信件列表界面,新建列表界面的model就是letter,所以我需要一个Letter的实体(entity),那这个Letter有哪些属性呢?写信的人(sender)、信的内容(content)、信的时间(dateString)、信的已读未读状态(isRead)、发信还是收信(incoming);所以我Letter的entity创建之后是这样: 这样就好了吗,并没有,如果是普通的展示界面,只有letter的实体,这样就足够了;但是对于我的这个项目来说,是展示信件的,是比较私人的,我缓存的信件列表应该只有我能看到,如果别人在我的手机上登陆了呢?因为我没有做区分,所以,当他登入的时候,他能看到我的数据,因为数据是缓存在手机上的! 所以,我需要一个User的Entity,这个User的Entity的目的是:跟Letter绑定,保证每个人都看到自己应该看到的;user有两个attribute:accout和writeName,(正常情况下应该是uid,但是我的这个是比较简单,所以没有uid); 紧接着问题是,Let...
轮播图实现的三种方式
轮播图实现的三种方式假设有5张图片,分别是:12345,实现轮播图 方法1:用scrollView加NSTimer实现,思路:12345五张图片,实现轮播,我添加两张,变成5123451,当滑到最后一个1时,无动画位移回第一个1;当倒着滑到5时,无动画回最后的5。 难点在于:给定数组的个数,及两个边界的判断 方法2:用collectionView加NSTimer实现,思路:12345五张图片,对应collectionView的1个section,即一个section有5个row;至于有多少个section,尽量设置的大一些,eg:100;(collectionView有重用机制)所以不用担心内存问题。 难点在于:滑动的逻辑处理;如果你把section设置的非常大,就不用担心倒着滑的问题,毕竟不是每个人都那么闲。 1234567891011121314151617181920- (void)nextPage:(id)sender { // 1. 得到当前正在显示的cell的indexPath,(只有一个) NSIndexPath *currentI...
实现Button文字(titleLabel)和图片(imageView)上下排列
实现Button文字(titleLabel)和图片(imageView)上下排列 1、我最开始实现这个采用的方法:重新自定义一个view,然后有两个属性label和imageView,然后设置位置布局,再添加单击手势,用代理回传点击方法。 2、第二种方法:自定义一个Button继承Button,有两个属性label和imageView,然后设置布局。这样就不用添加单击手势。 3、第三种方法:直接用Button自带的titleLabel和imageView,写个Category,用来设置label和image的排列方式,eg:上下、左右 明显前两种是很不好的,所以这里只说第三种: Button有两个属性:titleEdgeInsets和imageEdgeInsets,通过设置这两个,就可以实现所有需要的Button的样式,如:image在上、image在下、image在左、image在右。 在设置这两个之前,我们先要理解Button上面的titleLabel和imageView的位置关系(想象Button默认的image和label的显示): titleEdg...
iOS开发——扫码界面实现
类似下面这样一个收款界面的实现 界面分析 黑色半透明背景 navgationBar下面绿色的那个headerView 扫码框,及绿色动态扫码线的实现 扫码框下面的提示文字 黑色背景的实现,可能跟想象的不同,见下图(图中的1/2/3只是标识不同部分,不是顺序),先是需要放一个backView,然后是放中间的扫码框3,再然后上下左右四个1,最后放headerView和提示文字2; 实现
iOS开发知识点3——键盘
iOS开发知识点3——键盘 点击屏幕回收键盘是很简单的,但是在scrollView上点击回收键盘,直接调用那个方法就不能实现了 123456789101112131415161718192021222324252627282930313233// 我的实现是这样的// 首先实现一个继承自UIScrollView的Category,.m文件的实现#import "UIScrollView+UITouch.h"@implementation UIScrollView (UITouch)- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [[self nextResponder] touchesBegan:touches withEvent:event]; [super touchesBegan:touches withEvent:event];}- (void)touchesMoved:(NSSet *)touches withEvent:(UI...
iOS开发知识点2——登陆界面
iOS开发知识点2——登陆界面 按钮的实时响应:登陆的时候,需要当用户有输入时按钮才能响应(可点击),如果有一个输入框为空,则按钮不可响应。以前我以为用的是textfield的代理方法直接判断,后来发现那样不好。有另一种方法 12345678910111213141516171819// 首先给textfield添加addTarget方法,注意最后的controlEvents是EditingChanged[self.accountTextField addTarget:self action:@selector(handleTextDidChange:) forControlEvents:UIControlEventEditingChanged];[self.passwordTextField addTarget:self action:@selector(handleTextDidChange:) forControlEvents:UIControlEventEditingChanged];// 然后实现这个方法- (void)handleTextDidChange:(i...
iOS开发知识点
iOS开发知识点今天整理项目,为项目添加注释,发现有些东西需要保存一下,将来好使用。 设置navBar的背景,去掉黑线,试了好长时间,查了好多,这个对我适用 设置navBar上item的颜色,以及nav Title的颜色和字体大小 替换系统返回按钮的图片,设计说自带的太丑,一开始是自定义返回的View,后来发现不用那么麻烦,直接有方法可以替换 123456789101112131415// 设置navBar背景,这样设置可去掉那个黑线[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"bg_bar"] forBarMetrics:UIBarMetricsDefault];[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];[[UINavigationBar appearance] setTranslucent:NO]; // 设置navBar的按钮的tintColor,...