https://blog.csdn.net/u010105969/article/details/53260997 在项目中我们有时会遇到这样的需求:显示一段文字,但这段文字最多显示4行。...我们首先考虑没有行数显示的情况: UILabel * lbl = [[UILabel alloc] init]; lbl.backgroundColor = [UIColor redColor...如果显示固定行数,我们需要知道固定行数时单元格的高度 UILabel * lbl = [[UILabel alloc] init]; lbl.backgroundColor = [UIColor
https://blog.csdn.net/u010105969/article/details/80591908 背景: 在开发中我们如果对一个UILabel根据内容高度进行自适应,有时会出现文字不能右对齐的情况...解决方法: 我们可以设置UILabel上的文字内容为两端对齐。 代码: ?...NSMutableParagraphStyle * paragraphStyle1 = [[NSMutableParagraphStyle alloc] init]; //设置label每行文字之间的行间距
1、给UIlabel添加一个分类即可,代码如下: 必须导入这个头文件:CoreText/CoreText.h - (void)changeAlignmentRightandLeft{ CGRect
今天写代码突然发现给UILabel设置中划线失效了,纠结了好久,终于找到解决办法(有可能是iOS10.3的bug,别的系统没事),解决办法: NSMutableAttributedString *attStr
在项目开发中,我们经常会遇到在这样情形: 1、在一个UILabel 使用不同的颜色或不同的字体来体现字符串 在iOS 6 以后我们可以很轻松的实现这一点,官方的API 为我们提供了UILabel类的...iOS 在UILabel显示不同的字体和颜色"; labelStr.textColor = [UIColor lightGrayColor]; labelStr.font = [UIFont systemFontOfSize...APP时,我们会用到给文字加下划线,表示重视,给价格加中划线表示打折了 // label添加下划线 UILabel *label = [[UILabel alloc]initWithFrame:(CGRectMake...添加中划线,表示为打折出售"; //中划线 NSDictionary *attribtDic2 = @{NSStrikethroughStyleAttributeName: [NSNumber numberWithInteger...有时文字的多少是不确定的,这时就需要我们判断这些文字的宽和高,以便于正确定义label的位置大小 NSString *layoutStr = @"iOS UILabel自适应宽度"; UILabel
为了计算UILabel的宽度,除了通过NSString自带的boundingRectWithSize的API外,还可以利用sizeToFit对UILabel封装一个分类。 1....需求: 根据字符串,字体,计算UILabel宽度 根据字符串,字体,宽度,计算UILabel高度 2....调用示例: 场景:在一个UITableViewCell中,重写Cell的一个模型属性的setter方法,需要先对UILabel对象的text属性赋值后,再进行更新布局约束操作。...options: 文本绘制时的附加选项。可能取值请参考“NSStringDrawingOptions”。 attributes: 文本绘制时用到的AttributedString的属性。...最终,该对象包含的信息将用于文本绘制。该参数一般为 nil 。 返回值: 一个矩形,大小等于文本绘制完将占据的宽和高。 练习题:封装一个根据字体,字符串,宽度等参数得到高度的方法?
iOS运用runtime全局修改UILabel的默认字体 一、需求背景介绍 在项目比较成熟的基础上,遇到了这样一个需求,应用中需要引入新的字体,需要更换所有Label的默认字体,但是同时...乍看起来,这个问题确实十分棘手,首先项目比较大,一个一个设置所有使用到的label的font工作量是巨大的,并且在许多动态展示的界面中,可能会漏掉一些label,产生bug。...其次,项目中的label来源并不唯一,有用代码创建的,有xib和storyBoard中的,这也将浪费很大的精力。这种情况下,我们可能会有下面两种处理方式。...二、处理方式 1、使用框架 创建我们自己的BaseLabel类,在其中进行默认字体的设置,并且并不影响在使用过程中特殊设置字体的label,这种方式可以满足我们的需求,但是并不适于我们的场景...UILabel默认显示的字体,我们分别从init,initWithFrame和nib文件创建一个UILabel添加到视图上,不做任何其他的操作: UILabel * label = [[UILabel
@IBOutlet weak var nicknameLabel: UILabel! @IBOutlet weak var bioLabel: UILabel!...,优点是简洁明了,没有太多弯弯绕绕的东西,基本就是把原本写在 Controller 中的代码放到了 View 中。...譬如 ViewModel 这个东西,如果你的 View 是一个高度定制化的 View,几乎没有被复用的可能,那在命名的时候,大可以跟业务相关,数据处理也可以采用方案一,因为这是最容易理解的方式,也是最方便开发的方式...RxSwift + MVVM 由于 Cocoa Touch 本身并没有一个统一的数据绑定机制,MVVM 几乎是随着 RAC 这个 FRP 框架走近 iOS 开发者的视线的。...,在我这个简单的例子中表现并不比方案三中普通的 ViewModel 更好。
三个图片的均匀布局 ? 5个图片的均匀布局 需求:在绿色框内实现图片的均匀布局。...思路: 1.先获取绿色框的宽度 2.再获取所有图片的宽度 3.获取图片间的间距((绿色框的宽度-所有图片的宽度)/(图片数-1)) 4.进行布局 代码: CGFloat allImageW = 0.0f
基本思想: 通过一趟排序将数据分割成两部分,其中一部分的所有数据都比另一部分的所有数据都小,但是两部分数据是无序的。然后再对两部分的数据分别进行第一趟的排序,直到最后的数据是有序的。...排序步骤: 1.选择所有数据中的第一个数据作为一个比较的标准。(左侧数据下标i 右侧数据下标j。...最开始i = 0,j = 数据个数-1) 2.从数据的最右端开始找比这个标准数据小的一个数据(j–),找到后,将其赋值给第i个数据。...(为了让左侧数据都小于这个比较的数据) 3.从数据的最左侧开始找比这个标准数据大的一个数据(i ++),找到后,将其赋值给第j个数据。...(为了让右侧数据都大于这个比较的数据) 4.直到i和j相等,然后再分别对左右侧数据进行第3、4步的比较。最终得到的数据是一组递增有序数据。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...
方法可以运行在任意线程,因此可以有效的应用在那些异步算高或者要求尺寸进行提前计算的场景中。...从iOS官方的实现中可以看出文本算高会考虑简单文本字符串、属性字符串、字体大小、最大显示行数numberOfLines、段落信息、 段落的对齐方式、断字方式、段落的首行缩进、阴影偏移等等因素。...中的sizeThatFits中的参数的意义。...指定文本的最小缩放因子,默认填写0。...rect.size.width += firstLineHeadIndent; } } } //取fitsSize和rect中的最小宽度值
设置圆角的效果图: 方法一:使用代码设置 //第一步设置圆角的大小 //如果是设置为视图的高度的一半,则为半圆弧 _circleBtn.layer.cornerRadius = 5; //第二部:设置剪切..._circleBtn.layer.masksToBounds =YES; //CALayer的setMaskToBounds属性和UIView的clipsToBounds属性一样 //设置其布尔值,决定视图的显示范围...,当选择YES的时候,剪裁掉超出父视图的子视图部分,选择NO不裁剪子视图 方法二:使用xib设置 我们在选中xib中的按钮视图,在User Defined Runtime Attributes中,如图添加设置属性...,同样达到了设置圆角的目的
上面是后端同学按照照module的方式开发的服务,在整个的项目中请求中前缀相同而每个module都有自己的前缀,结合起来整个请求URL格式就可以拆分为 HOT:PORT?...正如我们的标题一样我们采用category将统一的网络请求拆分到不同的文件中---类似服务端的module一样将器拆分到不同的文件中进行管理 比如上面的我们将通过用的网络请求放置到ApiFetch这个类中...保持一致我们进行各模块的网络请求管理以便根据某一某块的特殊要求作出变化,例如,user模块中 -(void)userGetFetch:(NSString *)url query:(NSDictionary...中附带一个module对应的参数---user,对应的Oder也会添加一个order作为模块url参数的前缀 然后是模块对应的url的管理啦: 如上图每个模块都有自己的path对应url,我们可以统一的防止在...category对应的头文件中 总之一句话就是分而治之,将杂而乱的url分化到不同的模块中去,按照每个模块的特性去进行管理 最后我们看看怎么使用吧 user模块的网络请求实例 NSDictionary
简介 开发者应该经常看到单例模式这个设计模式,那什么是单例模式呢?...我们知道面向对象编程会生成很多实例,比如对于学生这个对象可能有小明、小红、小强等多个具体的学生对象,多个对象可以方便我们对不同的对象根据不同的需求进行操作。 那有没有只需要一个对象的时候呢?有的。...iOS开发中的实现 介绍完了单例模式是什么,现在看看怎么实现。 各个语言都有自己的单例模式,其实对于单例模式的实现,最根本的一点就在于保证全局只有一个对象实例。...有的,用 GCD 中的 dispatch_once 方法,就可以保证创建新实例的代码只执行一次,那么其创建的实例也就是全局唯一的实例了。...具体的用法,纯粹看各自的发挥,可以将一些常用的操作提取出来放在头文件中供调用,这样其实就能方便的获取和操作单例的内容了。
https://blog.csdn.net/u010105969/article/details/79958415 背景: 产品要求对项目中的图片具有模糊处理功能。...实现过程: 搜索相关资料得到的几种模糊处理的图片的方法: 使用vImage_Buffer (被产品否定,理由:效果不好) 使用高斯模糊处理图片(被自己否定,理由:太耗CPU,CPU瞬间飙升到99%...注意:模糊度要有一个合适的范围并不是0~100。 效果图: ?...模糊效果图 demo地址:https://gitee.com/liangsenliangsen/image_fuzzy_processing.git demo中除了有使用UIImage+ImageEffects...的方法,也有使用其他几种图片模糊处理的方法,大家可以看看那种效果更好。
RxSwift中有四种类型的Subject: PublishSubject: 只会发送新的事件给订阅者,订阅之前的事件不会发送。...当有新的订阅者是,它会把缓存的事件发送给新的订阅者。 Variable:相当于一个BehaviorSubject的封装,它会保存当前值做为自身的一个状态,发送当前的状态给新的订阅者。...PublishSubject 的next事件只会发送给当前已经订阅这个subject的订阅者,新的订阅者不会收到订阅之前发送的事件。...当有新的订阅者是,它会把缓存的事件发送给新的订阅者。 ?...需要注意的点 ReplaySubject的缓存是缓存在内存里面的,所以,如果ReplaySubject发送的是图片,就不能将buffer size设置的太大,很容易造成内存压力。发送的是数组也一样。
概要 RunLoop在iOS开发中的应用范围并没有像runtime 那样广泛,我们通过CFRuntime的源代码可知runloop跟线程的是密不可分的,一个线程一定会创建一个对应的runloop,只是主线程创建就自动...此外,runloop并不是一个简单的do-while,作为OSX/iOS系统中Event Loop表现,runloop需要处理消息事件,在没有消息的时候休眠,有消息事件的时候立刻唤醒。 ...所有的关于这个的都会拿AF2.X的代码说明这个常驻的案例,如果同学开发iOS稍微有点年长的话或者古董代码的都会用到网络第三方库ASIHTTPRequest,也用到利用CFRunLoopAddSource...YYKit的写法:其中优先级设置为最小的32位-0x7fffffff 和最大的32位0x7fffffff static void YYRunloopAutoreleasePoolSetup() {...image.png 3.3 TableView中实现平滑滚动延迟加载图片 顺带提一下,这个我在开发中没有用到。
首先,之所以提到CPU架构的问题,其实是因为我们iOS开发使用的静态库与动态库与之紧密相连。...比如iPhone6s的CPU默认指令集是arm64,但是也同时支持armv7s等以前版本的指令集,只是效率变低了而已。 xcode模拟器其实是在电脑上的,所以iOS模拟器并没有使用arm指令集。...在Xcode中设置二进制包所支持的指令集,对于编译后的二进制包的大小影响显著,设置支持的指令集个数越少,安装包也越小。...四、Xcode中关于指令集的配置与使用 具体在Xcode中的使用,我们在Xcode中选择将要设置的target,然后打开build setting, 可以看到有关指令集设置的Architectures选项...五、遇到的问题 在这里记录一个在开发中遇到的问题。曾经在使用CocoaPods管理第三方的时候,遇到了“library not found for -lXXX”的错误,当时使用了Masonry的库。
学习iOS开发已经有一段时日了,之前一直没有系统的对iOS开发的相关知识进行归纳总结,导致很多知识点云里雾里在脑子里形不成iOS开发的思想,现将自己在学习过程中遇到的一些知识进行总结,希望能对iOS初学者能有一定的帮助...作为iOS开发的入门总结的第一篇,这里以最常见的注册或登陆页面设计作为开篇,这里主要会用到UILabel,UIButton,UITextField这三个控件。...一.注册或登录界面 如下图,实现了一个注册或登录界面,这里先只介绍单个页面,不介绍点击“完成”按钮后的动作,在之后的系列《iOS开发入门总结》中会逐步介绍,等基础知识介绍的差不多了,就可以以一个完整的注册系统作为小结...中文本的行数 21 [self.view addSubview:nameLabel]; 22 [nameLabel release]; 23 24 UILabel...中文本的行数,其属性值默认为1,用于设置该UILabel只能显示一行文本。
领取专属 10元无门槛券
手把手带您无忧上云