How to Use updateConstraintshtml, body {overflow-x: initial !important;}html { font-size: 14px; } body { margin: 0px; padding: 0px; height: auto; bottom: 0px; top: 0px; left: 0px; right: 0px; font-family: 'Helvetica Neue', Helvetica, Arial, sans-seri…
*一切皆代码*- -- #继承关系框架|类|类:-:|:-:|:-:UIKit|NSLayoutConstraint|--|-|- #应用场景UI界面的搭建一般会占用项目开发相当一部分的时间.涉及到控件布局,控件配置,人机交互,动画效果,数据显示,屏幕适配6个方面,还要考虑视觉效果,性能体验,数据边界(没有数据/很多数据),操作防御(各种狂点)4个方面.另外,UI界面也是开发过程中需求变化比较多的地方. 其中控件布局是最基础和根本的一个方面. 布局,顾名思义,就是设置控件在屏幕上的位置.自动是相…
Masonry简介 Masonry是一个轻量级的布局框架,它拥有自己的描述语法(采用更优雅的链式语法封装)来自动布局,具有很好可读性且同时支持iOS和Max OS X等.总之,对于侧重写代码的coder,请你慢慢忘记Frame,喜欢Masonry吧 使用前的准备 若是你对于自动布局很熟练的话,再接触这个第三方Masonry很容易上手的,对UI界面显示的控件的约束本质都是相同的,现在呢,我一般都是喜欢在控制器里导入 #import "Masonry.h"之前再添加两个宏,来提高App的开…
一.UIViewController 的生命周期 下面带 (NSObject)的方法是NSObject提供的方法.其他的都是UIViewController 提供的方法. load   (NSObject) initialize   (NSObject) init   (NSObject) initWithCoder initWithNibName awakeFromNib   (NSObject) loadView viewDidLoad viewWillAppear updateViewCo…
本文翻译自:stackoverflow 有人在stackoverflow上问了一个问题: 1 如何在UITableViewCell中使用Autolayout来实现Cell的内容和子视图自动计算行高,并且能够保持平滑滚动的? 这个问题得到了300+的支持和450+的收藏,答案得到了730+的支持,很详细的说明了如何在iOS7和iOS8上实现UITableView的动态行高功能,并且这个答案对实现UICollectionView的动态行高也具有参考意义.所以在这里将这个答案翻译了一下,希望对大家有所…
iOS 屏幕适配:autoResizing autoLayout和sizeClass 一.图片解说 -------------------------------------------------------------------------------------------------------------------------------------------------------------- 二.AutoLayout 1.前言 •在iOS程序中,大部分视图控制器都包含了大量…
1:兼容字体大小6plue跟它以下的区别 #define FONT_COMPATIBLE_SCREEN_OFFSET(_fontSize_) [UIFont systemFontOfSize:(_fontSize_ *([UIScreen mainScreen].scale) / 2)] 在iPhone4~6中,缩放因子scale=2:在iPhone6+中,缩放因子scale=3 运用时: myLabel.font=FONT_COMPATIBLE_SCREEN_OFFSET(); 扩展:画一像素…
总结一下布局UIView 1.Laying out Subviews(布局子视图) 系统提供了相关的三个api - (void) layoutSubviews 在IOS5.1和之前的版本,此方法的缺省实现不会做任何事情(实现为空),IOS5.1之后(IOS6开始)的版本,此方法的缺省实现是使用你设置在此view上面的constraints(Autolayout) 去决定subviews的position和size.UIView的子类如果需要对其Subviews进行更精确的布局,则可以重写此方法.…
1 理解自身内容尺寸约束与抗压抗拉 自身内容尺寸约束:一般来说,要确定一个视图的精确位置,至少需要4个布局约束(以确定水平位置x.垂直位置y.宽度w和高度h).但是,某些用来展现内容的用户控件,例如文本控件UILabel.按钮UIButton.图片视图UIImageView等,它们具有自身内容尺寸(Intrinsic Content Size),此类用户控件会根据自身内容尺寸添加布局约束.也就是说,如果开发者没有显式给出其宽度或者高度约束,则其自动添加的自身内容约束将会起作用.因此看似“缺失”约…
从一开始的纯代码计算frame,虽然自认为计算frame 刚刚的,但是到后来还是开始xib的自动约束和手动约束与frame搭配使用,经历这几种方式,大概一年前开始普遍使用masonry来代码约束之后也跃跃欲试的自己体验了把,感觉还不错,分享下,比原生的好使多了. 使用步骤 1.添加Masonry文件夹的所有源代码到项目中(共两个Masonry这个文件夹,以及Masonry.framework) 2.添加两个宏定义导入头文件 // 只要添加了这个宏,就不用带mas_前缀 #define MAS_S…
记录一些常用和不常用的iOS知识点,防止遗忘丢失.(来源为收集自己项目中用到的或者整理看到博客中的知识点),如有错误,欢迎大家批评指正:如有好的知识点,也欢迎大家联系我,添加上去.谢谢! 一.调用代码使APP进入后台,达到点击Home键的效果.(私有API) [[UIApplication sharedApplication] performSelector:@selector(suspend)]; suspend的英文意思有:暂停; 悬; 挂; 延缓; 二.带有中文的URL处理. 大概举个例子…
接上篇继续进行Masonry 的学习. (12)tableViewCell 布局 #import "TableViewController.h" #import "TestTableViewCell.h" @interface TableViewController ()<UITableViewDelegate, UITableViewDataSource> @property(nonatomic, strong) UITableView *tableV…
关于UIView的Layer,IOS提供了三个方法: 1.layoutSubviews 在iOS5.1和之前的版本,此方法的缺省实现不会做任何事情(实现为空),iOS5.1之后(iOS6开始)的版本,此方法的缺省实现是使用你设置在此view上面的constraints(Autolayout)去决定subviews的position和size. UIView的子类如果需要对其subviews进行更精确的布局,则可以重写此方法.只有在autoresizing和constraint-based beh…
简单介绍 Masonry 源码地址:https://github.com/Masonry/Masonry Masonry是一个轻量级的布局框架 拥有自己的描述语法 采用更优雅的链式语法封装自动布局 简洁明了 并具有高可读性 而且同时支持 iOS 和 Mac OS X. ``` pod 'Masonry' ``` 使用Masonry需要导入头文件 `#import  "Masonry.h"`  系统API vs Masonry   系统API NSLayoutConstraint ```…
简介 简化iOS应用使用纯代码机型自适应布局的工作,使用一种简洁高效的语法替代NSLayoutConstraints. 项目主页: Masonry 最新示例: 点击下载 项目简议: 如果再看到关于纯代码,xib或storyboard,使用哪种方式进行UI布局更合适的讨论,请推荐他们先试用下 Masonry. Masonry,像xib一样快速,同时拥有作为纯代码方式的灵活性 -- github关注度 7800 + 是有原因的! 快速入门 安装 使用 CocoaPods 安装 pod 'Masonr…
Masonry 仍然在维持. 如果使用 Swift 开发, 建议使用 SnapKit. Masonry 以一种简便可读的代码实现子控件自动布局 ,甚至可以实现一些动画,是一中轻量级的框架. Masonry 支持 iOS 和 Mac OS X.可以使用Pod安装或则下载ZIP直接导入使用. 如果不想使用前缀'mas_',可以导入宏,具体如下: #define MAS_SHORTHAND #define MAS_SHORTHAND_GLOBALS #import "Masonry.h" 下…
一.Swift - 自动布局库SnapKit的使用详解1(配置.使用方法.样例)   为了适应各种屏幕尺寸,iOS 6后引入了自动布局(Auto Layout)的概念,通过使用各种 Constraint(约束)来实现页面自适应弹性布局.(想了解更多可查看我原来写的这篇文章:Swift - 使用Auto Layout和Size Classes实现页面自适应弹性布局) 在 StoryBoard 中使用约束实现自动布局很方便,但如果用纯代码来设置约束就很麻烦了.这里向大家推荐一个好用的第三方布局库:S…
转自:http://blog.csdn.net/cubepeng/article/details/11284173 OS不允许使用ios私有api,使用私有api可以获得意想不到的效果 ,同时使用私有api是一个程序员的技术体现之一.至于怎么通过apple的审核,其实是有些办法的,但是不属于今天讨论的范围.私有api可以通过 dump头文件获得,也可以去github clone一份现成的,但是还是推荐自己去dump.但是我们今天不是讨论,如何使用dump到的api,而是通过一个例子来讨论如何通过…
简要 自动布局最重要的是约束:UI元素间关系的数学表达式.约束包括尺寸.由优先级和阈值管理的相对位置.它们是添加剂,可能导致约束冲突 .约束不足造成布局无法确定 .这两种情况都会产生异常. 使用前:AutoLayout关于更新的几个方法的区别 setNeedsLayout:告知页面需要更新,但是不会立刻开始更新.执行后会立刻调用layoutSubviews. layoutIfNeeded:告知页面布局立刻更新.所以一般都会和setNeedsLayout一起使用.如果希望立刻生成新的frame需要…
First we will recap the steps it takes to bring views on screen with Auto Layout enabled. When you’re struggling to produce the kind of layout you want with Auto Layout, specifically with advanced use cases and animation, it helps to take a step back…
官方网址:http://snapkit.io/ Github: https://github.com/SnapKit/SnapKit SnapKit is a DSL to make Auto Layout easy on both iOS and OS X. Simple & Expressive chaining DSL allows building constraints with minimal amounts of code while ensuring they are easy…
使用AutoLayout之前需要知道以下两点: 1.必须设置 translatesAutoresizingMaskIntoConstraints为NO. 2.如果是viewControl则AutoLayout适配写在[- updateViewConstraints]中: 如果是view则AutoLayout适配写在[- updateConstraints]中. 一.要讲解的方法: /* Create constraints explicitly. Constraints are of the f…
有更新,请往最下边查看. 一.前言 关于苹果的布局一直是我比较纠结的问题,是写代码来控制布局,还是使用storyboard来控制布局呢?以前我个人开发的时候很少使用代码去写约束,因为太麻烦了.所以最终选择的都是AutoLayout进行布局,然后拖线设置约束.不过好多公司进行iOS开发的时候都会去动态的修改约束,而且有的会使用约束去创建一些动画,所以不太去用storyboard进行开发(还有就是使用storyboard几个人合作的时候比较麻烦).反倒更多的是写代码开发看起来更加的高效.所以好多开发…
Autolayout就像一个知情达理,善解人意的好姑娘,可惜长相有点不堪入目,所以追求者寥寥无几.所幸遇到了化妆大师cloudkite,给她来了一个完美的化妆,从此丑小鸭Autolayout变成了美天鹅Masonry.前几日有幸一见,果然名不虚传,长相甜美,还善解人意.我果断放弃了Frame,开始追求Masonry 初识Masonry 初见 我们先来看看Masonry到底有多美.我要设置一个containView,他距离superView的上下左右边距都是10.如果我用frame,应该是这样写的…
OC下的autolayout神器Masonry大家已经很熟悉了.但是masonry在swift下使用并不方便.所以同一个团队开发出了swift下的autolayout库:SnapKitsnapkit从0.14开始支持swift2.0并且支持iOS7.不过常规的导入方法只支持iOS8.0+. 1 GitHub链接:https://github.com/SnapKit/SnapKit 学习一下第三方的约束管理.其中SnapKit适用于Swift,Masonry适用于OC. 2.安装: 1.直接下载:…
前言 NS_CLASS_AVAILABLE_IOS(6_0) @interface NSLayoutConstraint : NSObject @available(iOS 6.0, *) public class NSLayoutConstraint : NSObject 1)Autolayout 在 Autolayout 之前,有 Autoresizing 可以作屏幕适配,但局限性较大,有些任务根本无法完成(只能解决子控件跟父控件的相对关系问题,不能解决兄弟控件的相对关系问题).相比之下,A…
前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UITableView : UIScrollView <NSCoding> @available(iOS 2.0, *) public class UITableView : UIScrollView, NSCoding 1.tableView 的创建 Objective-C 遵守 UITableViewDelegate, UITableViewDataSource 协议 数据源 初始化 // 声明数据源,必须…
前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIViewController : UIResponder <NSCoding, UIAppearanceContainer, UITraitEnvironment, UIContentContainer, UIFocusEnvironment> @available(iOS 2.0, *) public class UIViewController : UIResponder, NSCoding, UIAp…
在之前的文章中我介绍了如何使用SnapKit的 snp_makeConstraints 方法进行各种约束的设置.但有时我们的页面并不是一直固定不变的,这就需要修改已经存在的约束.本文介绍如何更新.移除.代替现有的约束.1,删除约束要实现对现有的约束进行更新或者移除,我们需要先将约束的结果赋值给一个局部变量或一个类属性,然后对这个约束的引用进行操作.比如下面样例:开始时我们给橙色方块添加了个距屏幕上方40像素的约束,点击按钮后使用 uninstall() 方法把这个约束给移除…
首先说几点:我一般将数值类型的约束用mas_equalTo,而相对于某个控件,或者某个控件的某个约束,我会使用equalTo,如:make.size.mas_equalTo(CGSizeMake(100, 100));make.center.equalTo(weakSelf.view);setNeedsLayout:告知页面需要更新,但是不会立刻开始更新.执行后会立刻调用layoutSubviews.layoutIfNeeded:告知页面布局立刻更新.所以一般都会和setNeedsLayout一…