首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Autolayout

强大很多 拖线时造成的Autolayout的警告和错误 警告  ?...(1) 在创建约束之后,需要将其添加到作用的view上 在添加时要注意目标view需要遵循以下规则: 1)对于两个同层级view之间的约束关系,添加到它们的父view上 ?...在没有Autolayout之前,UILabel的文字内容总是居中显示,导致顶部和底部会有一大片空缺区域 ?...UILabel实现包裹内容 设置宽度约束为 <= 固定值 设置位置约束 不用去设置高度约束 基于Autolayout的动画 在修改了约束之后,只要执行下面代码,就能做动画效果 [UIView animateWithDuration...,添加新的约束 - (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block; 以下为代码使用实现布局效果:

92860

【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )

) 代码生成 按钮 : 1.创建按钮控件 : 创建 UIButton 控件时 , 需要制定按钮类型 , 这里创建 Custom 类型的控件 ; //1....UIViewController 创建完成 , 并开始加载到内存中时 , 在这个时刻执行该 viewDidLoad 方法 //一般情况下 是 在该方法中 执行 初始化数据 , 创建控件 等操作 ; -...class]] 5.删除所有 UILabel 控件 : 使用 for in 循环 删除所有的 UILabel 控件 ; //1....3.初始化 NSArray 成员变量 : 先逐个创建对应的 NSMutableDictionary 字典 , 然后将字典 当做元素 放入 NSArray 数组中 , 数组中的每个元素都是一个 字典 ;...“5.NSBundleDemo.app” 文件 , 选择 显示包内容 选项 , 可以查看 Bundle 内容 , 如下图 ; 7.创建文件 : 创建 1 个 新的 Storyboard 文件 ,

4K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Masonry

    ,平时在我们开发当中,我们可能需要通过初始化来确定一些属性的值,并不想由外界来修改它,于是我们可能会需要些很多个initWith方法,加入我的这个对象有姓名、性别、年龄等属性,但是我初始化的时候,并不是所有地方都要知道这些信息...源码当中,我们看到在修饰block的时候用到了NS_NOESCAPE - (NSArray *)mas_makeConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker...:方法中self并没有直接或间接持有block,而是直接调用block(constraintMaker),所以不会引起强引用 链式调用实战应用 在我们开发过程中,我们会经常用到UILabel,每次初始化都要设置一堆的属性...首先为UILabel创建一个category,#import "UILabel+zjLabel.h",代码如下: #import "UILabel+zjLabel.h" @implementation...可以看到在iOS12之前auto layout性能会随着嵌套视图的增加呈指数增长,但是在iOS12上苹果官方已经对此进行了优化,随着嵌套视图的增加性能问题得到了大幅的提升。

    1.1K10

    工匠人iOS 代码规范

    375 : 400; 4.多个不同的运算符同时存在时应该使用括号来明确优先级 在多个不同的运算符同时存在的时候应该合理使用括号,不要盲目依赖操作符优先级。...在类的头文件中尽量少引用其他头文件 有时,类A需要将类B的实例变量作为它公共API的属性。...这个时候,我们不应该引入类B的头文件,而应该使用向前声明(forward declaring)使用class关键字,并且在A的实现文件引用B的头文件。 3....Event ——————————————— #pragma mark - ————————————————— Setter/Getter ———————————————— 五、字面量语法 尽量使用字面量值来创建...NSArray和NSDictionary时使用类型标注,可以保证程序的安全性: @property (nonatomic, strong) NSArray

    1K186

    码一个高颜值统计图

    一:介绍 在项目中遇到数据展示需求时,往往会通过,以列表的形式展示出数据或者以表格的形式展示。但是并不能直观的观察数据的变化,如果通过图表的形式来展示,就可以更快捷的获取到数据变化情况。...*yMarkTitles; //X轴刻度标签 @property (nonatomic, strong) NSArray *xMarkTitles; // 与x轴平行的网格线的间距 @property...,效果原因只在竖直柱状图时有效 @property (nonatomic, assign) CGFloat labelRotation; ///如果要图表可以滑动设置的偏移值,横向柱状图时为水平滑动,...property (nonatomic, assign) CGFloat barWidth; ///间距 @property (nonatomic, assign) CGFloat margin; ///可滑动时默认显示的初始偏移距离...下载源码 在demo中找到FBYLineGraph文件夹,将文件夹拖入自己的项目中。DEMO截图 ? 2.

    1.8K10

    史上最全的iOS之UITextView实现placeHolder占位文字的N种方法

    而UITextField只能单独的展示一行内容。从这个角度,UITextView在功能上是优于UITextField的。...而开发中,我们经常会遇到既要占位文字,又要可以多行展示并且可以滚动的控件,单纯的UITextField或者UITextView都不能满足这种产品上的需求。...3.在结束编辑的代理方法里根据条件设置“placeholder”。...textView 2.给textView添加一个UILabel子控件,作为placeholder 3.在文本改变的代理方法里面显示/隐藏UILabel 特点:该方法同样也可以实现类似于placeholder...方法 特点:相比计较上面两种方法,这种方法可移植性、拓展性更好,这种方法,不仅乐意随意通过我们添加的placeholder属性设置默认文字,还可以通过我们添加的placeholderColor设置默认文字的颜色

    10.7K40

    GB代码规范1.0

    编译失败 不容易查找的BUG 造成的缺点 m文件还要#import 其他类调用这个类属性也要#import对应的类 综合来说宁愿自己多操作 也要防止这种循环引入的BUG的出现 pragma mark的使用...) UILabel *name; if判断里面的条件要提取出来 对于if里面很多的判断条件 要提取出来 方便之后进行断点测试 建议的写法 BOOL isTrue = 5 > 3; if(isTrue)...)(void) 错误写法 typedef void(DidUpdateViewCallBack) 使用NSUserDefaults要先创建 因为我们用到NSUserDefaults无非是保存和读取 事先的创建一个对象...object : [self createObject]; 错误处理 有些方法通通过参数返回 error 的引用,使用这样的方法时应当检查方法的返回值,而非 error 的引用。...数组和字典最好指定元素的类型 建议的写法 NSArray *names = [NSArray array]; 不建议的写法 NSArray *names = [NSArray array

    1.2K20

    iOS11新特性:新增拖拽交互体验 原

    iOS11新特性:新增拖拽交互体验 一、引言     在使用PC进行操作时,你一定遇到过这样的场景,可以将图片直接拖入聊天软件进行发送,可以将文档、音乐、视频文件等文件拖入相应应用程序直接进行使用。...这种拖拽操作交互极大的方便了电脑的使用。在iOS11中,你可以在iPhone或iPad上构建这种交互体验!...说在前面的话:       拖拽操作在iPad上是支持跨应用程序的,你可以从一个应用中拖取项目,通过Home键回到主界面并且打开另一个应用程序,然后将被拖拽的项目传递给这个应用程序中。...试想一下,如果我们可以通过拖拽商品来进行购买,拖拽联系人来进行发送,或者在游戏中,拖拽进行卡片的融合,装备的提炼等等这种交互操作是不是会很畅快。...outError{ Person * p = [NSKeyedUnarchiver unarchiveObjectWithData:data]; return p; } @end 需要注意,在拖放行为读取数据时的类型要对应

    2.1K10

    iOS-屏幕适配实现(AutoLayout)

    XCode5及其之后的版本,默认新建的项目就是使用AutoLayout 关于约束 约束概念 AutoLayout主要是通过控件参照与约束实现,比如控件A相对控件B来说,控件A在控件B的正下方,间距为20px...如果我们通过约束给定了UILabel的width = 100,但是内容仍然少的可怜,不能包裹,可以把宽度设置为的宽高都能包裹住内容。高度的设置同理可证。...当然,我们也可以只给UILabel设置x、y。但必须要保证UILabel的text属性有内容,否则UILabel显示不出来(这是初学者经常犯的错误)。...、CC RC CC CC、CR CC、RC CC RR RR、RC RR、CR RR 在不同布局下,同一控件通过设置不同常数值实现相同效果,可以在配置在添加布局,而不是添加两个约束 在配置在添加布局...控件属性增加布局 如果想指定尺寸选择一个新控件,可以在控件属性最下端,操作是类似,左边的加号指定尺寸,Installed表示通用 控件大量属性修改可通过installed添加布局 修改约束

    44010

    小问题记录

    ,不要写全路径,因为软件更新或者重新安装沙盒路径会变 更新的流程是这样的:更新时,先在新的路径里安装新程序,然后把旧程序文件夹里的配置文件之类的文件拷贝到新的路径里去,然后删除旧程序 所以,如果数据库里保存的是绝对路径...、调用这个方法的view2、view2的所有子view都会调用layoutSubviews setFrame:只有在view设置frame且尺寸参数有不同的情况下调用 滑动UIScrollView时,scrollView...reference 把touch事件传递给子View 涉及到事件传递部分内容,另外再开博客记录 reference ---- UILabel UILabel设置行间距 reference NSMutableAttributedString...forControlEvents:UIControlEventEditingChanged]; 多个UITextField,键盘return改为next->next->done (iOS9又有新的类型...addObject:item]; } return ansArray; NSArray添加CGPoint对象 一般使用NSValue reference NSArray *points = [NSArray

    3.4K21

    iOS实现UICollectionViewDataSource与Controller的分离

    就很臃肿了, 为了避免代码臃肿也减少ViewController的代码量 我们可以将DataSource方法分离出去, 大致方法如下: -> 创建需要的Model & 自定义Cell文件 -> 创建DataSource...类, 导入 Cell头文件并实现UICollectionViewDatasource -> 在Controller中导入Model & DataSource类 -> 创建DataSource类实例, 将数据传入...DataSource中 -> 创建UICollectionView, 将CollectionView的datasource指给上面创建的Datasource实例即可 下面举例示范: 为了简单 我就只下一个自定义的...%d", indexPath.row + 1 , self.imgLinkArray.count]]; 40 41 return cell; 42 } 43 44 @end 下面是在Controller...中的使用方法 1 //创建CollectionView 2 - (void)createCollectionView { 3 4 self.dataSource = ({ 5

    76310

    iOS文本布局探讨之一——文本布局框架TextKit浅析

    iOS文本布局探讨之一——文本布局框架TextKit浅析 一、引言         在iOS开发中,处理文本的视图控件主要有4中,UILabel,UITextField,UITextView和UIWebView...其中UILabel与UITextField相对简单,UITextView是功能完备的文本布局展示类,通过它可以进行复杂的富文本布局,UIWebView主要用来加载网页或者pdf文件,其可以进行HTML,...TextKit是一个偏上层的开发框架,在iOS7以上可用,使用它开发者可以方便灵活处理复杂的文本布局,满足开发中对文本布局的各种复杂需求。...二、TextKit框架的结构         界面在进行文本的渲染时,有下面几个必要条件: 1.要渲染展示的内容。 2.将内容渲染在某个视图上。 3.内容渲染在视图上的尺寸位置和形状。...在TextKit框架中,提供了几个类分别对应处理上述的必要条件: 1.NSTextStorage对应要渲染展示的内容。 2.UITextView对应要渲染的视图。

    1.9K10

    iOS UILabe及UIFont用法总结 原

    初始化一个UILabel对象,并初始化大小 UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 100, 100)...+ (NSArray *)familyNames; //按字体家族名称返回字体名称数组 + (NSArray *)fontNamesForFamilyName:(NSString *)familyName...lineHeight NS_AVAILABLE_IOS(4_0); //模型主体信息 @property(nonatomic,readonly)        CGFloat   leading; //创建一个新字体与当前字体相同...,除了指定的大小 - (UIFont *)fontWithSize:(CGFloat)fontSize; //通过描述信息返回字体 7.0后可用 + (UIFont *)fontWithDescriptor...,    //丢失的文本在末尾显示省略号    NSLineBreakByTruncatingTail,    //丢失的文本在中间显示省略号    NSLineBreakByTruncatingMiddle

    1K30

    iOS界面布局之四——使用第三方库Masonry进行autolayout布局

    在使用中,我们会发现,无论是代码量还是结构的清晰度,都十分不能让我们满意,在storyBoard中只需要几条线就可以搞定的事情,用代码缺要写冗余的一大堆。...2、3个方法让你玩转Masonry约束操作         Masonry在UIView的类别中,有3个全局的操作约束的方法,通过他们我们可以自由的进行autolayout的设置。...添加约束: - (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *make))block; 这个方法用于我们在最开始时为控件设置的约束...,在block中进行约束条件的设置,例如我们创建一个label,将其尺寸设置为50*50,放在屏幕中间,使用如下代码: 注意:在添加约束前,必须将视图添加到其父视图上。...,并不会移除掉原有的约束,如果我们需要添加新的约束,可以使用下面的重设约束的方法。

    1.9K20

    50行代码实现图文混排案例一

    现在的做法 苹果在iOS7中推出了一个新的类NSTextAttachment,它是做图文混排的利器,本文就是用这个类,只用50行代码实现文字与表情混排,当然也可以实现段落中的图文混排,与CoreText...先上效果图,聊天界面中的图文混排: 要实现这样的效果,code4app上似乎有很多种做法,还有一些奇葩的一个字符一个label,但是今天要讲述的做法,是目前为止我看到的最简单的做法了,只用一个UILabel...,需要用到UILabel的attributedText属性。...= [NSArray arrayWithContentsOfFile:filePath]; 第二步,将字符串转换为可变属性字符串,并通过正则表达式匹配出所有的要替换的字符。...,并且在计算的时候必须设置字符大小等属性。

    1.2K10

    Runtime在iOS开发中的实际应用

    1 关联对象(AssociatedObject ) Catagory主要为已经存在的类(主要是系统类)扩展新的方法,关联对象是runtime在开发中应用的最广泛,其主要用于为Catagory的对象增加属性...2 对象关系映射(ORM) 通过逆向APP会发现目前对象转模型这块目前主要用的是MJExtension和YYModel,老项目一般是MJExtension,新崛起的项目转到了YYModel上。...一是苹果审核的严格,各种理由反反复复被打回去欲哭无泪,二是审核周期长,在2017年之前苹果审核的周期一般都在三天,如果是新应用甚至需要一周以上,如果碰上圣诞节苹果放假我们这边是一般都不会提交审核,于是JSPatch...NSInvocation 是一个消息体的封装,包括selector 以及参数等信息。因此JSPatch通过NSInvocation来创建消息 ?...程序猿是跳槽率偏高的职业,如果去新公司做新项目还好说,一旦需要接手老项目的维护,商业项目可不是我们平常写的Demo的代码量,那代码中的逻辑结构瞬间会让新入职的小伙伴们懵逼,通过通过拦截点击事件,可以快速的熟悉代码的逻辑

    1K20
    领券