iOS UIKit:CollectionView之布局(2)】的更多相关文章

当弹出一个view controller时,UIKit提供了一些标准转换动画,并且也支持用户自定义的动画效果. 1 UIView动画 UIView是自带动画实现功能,其中有两种方式实现:        1) animateWithDuration系列方法        2) transitionFromViewController方法 1.1 animateWithDuration 只要在该方法的animations block中修改UIView的动画属性,那么即可实现动画变换,所以为conta…
Redesign Your App for iOS 7 之 页面布局 http://www.vinqon.com/codeblog/?detail/11109…
Collection view使用UICollectionViewFlowLayout对象来管理section中的cell,该对象是一种流布局方式,即在collection view中的section之间默认是往垂直方向分布,但在section中的cell则是往水平方向排列,若在一行中没有足够的空间容纳section的所有cell,则将剩下的cell放在下一行,如图 31所示. 图 31 Laying out sections and cells using the flow layout 1…
collection view(UICollectionView对象)使用灵活和可扩展的布局来描述有序的数据项,其一般情况下以网格的形式来展示内容,但并非一定如此. 1 基础 为了将数据展示在屏幕中,Collection View需要搭配其它多种对象,其中有些是用户可选对象,而有些则是必须使用类型. 1.1 配合对象 collection views的设计思想与table view的设计思想类似,都是将数据与展示分开,并且也涉及data source和delegate等多种类型,如表 11所示,…
UIkit动力学是UIkit框架中模拟真实世界的一些特性. UIDynamicAnimator 主要有UIDynamicAnimator类,通过这个类中的不同行为来实现一些动态特性. 它一般有两种初始化方法,先讲常见的第一种 ? 1 animator= [[UIDynamicAnimator alloc] initWithReferenceView:self.view]; 动态特性的实现主要依靠它所添加的行为,通过以下方法进行添加和移除, ? 1 2  [animator addBehavior…
UIkit动力学是UIkit框架中模拟真实世界的一些特性. UIDynamicAnimator 主要有UIDynamicAnimator类,通过这个类中的不同行为来实现一些动态特性. 它一般有两种初始化方法,先讲常见的第一种 ? 1 animator= [[UIDynamicAnimator alloc] initWithReferenceView:self.view]; 动态特性的实现主要依靠它所添加的行为,通过以下方法进行添加和移除, ? 1 2  [animator addBehavior…
Table View是UITableView类的实例对象,其是使用节(section)来描述信息的一种滚动列表.但与普通的表格不同,tableView只有一行,且只能在垂直方向进行滚动.tableView由多个section组成,而section又由行(row)组成,也可将行称为单元格(cell).Cell是UITableViewCell类的实例对象. 1 UITableViewCell Table View使用UITableViewCell对象来绘制可视化的row,从而用户看到的table v…
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); View Controller用于管理app的各种资源,有时虽然View Controller被实例化,但仍不会在屏幕中显示.比如Navigation中的view controller,只有栈顶的元素才能显示.正因为如此,所以View Controller实现了复杂行…
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css); @import url(/css/cuteeditor.css); 1.View架构 1.1 简介 UIView表示屏幕上的一块矩形区域,它在App中占有绝对重要的地位,因为IOS中几乎所有可视化控件都是UIView的子类.UIView的功能 :         1) 管理矩形区域里的内容:         2) 处理矩形区域中的事…
ViewController.m // // ViewController.m // IOS_0226_自定义UIColectionView布局 // // Created by ma c on 16/2/26. // Copyright © 2016年 博文科技. All rights reserved. // #import "ViewController.h" #import "ImgCell.h" #import "LineLayout.h&quo…
UICollectionViewFlowLayout是苹果公司做好的一种单元格布局方式,它约束item的排列规则是:从左到右依次排列,如果右边不够放下,就换一行重复上面的方式排放,,,,,   常用的流式布局UICollectionViewFlowLayout的属性 @property (nonatomic) CGFloat minimumLineSpacing;       //每一个item之间最小的行间距 @property (nonatomic) CGFloat minimumInter…
前一阵时间,看过这样一个demo,代码不多,但是简洁易懂. 转自: //  代码地址: https://github.com/iphone5solo/PYSearch //  代码地址: http://www.code4app.com/thread-11175-1-1.html /** 添加和布局标签 */ - (NSArray *)addAndLayoutTagsWithTagsContentView:(UIView *)contentView tagTexts:(NSArray<NSStri…
之前如果做过Web前端页面的小伙伴们,看到绝对定位和相对定位并不陌生,并且使用起来也挺方便.在IOS的UI设计中也有绝对定位和相对定位,和我们的web前端的绝对定位和相对定位有所不同但又有相似之处.下面会结合两个小demo来学习一下我们IOS开发中UI的绝对定位和相对定位.在前面的博客中所用到的UI事例用的全是绝对定位,用我们Storyboard拖拽出来的控件全是绝对定位的,就是我们可以同改变组件的frame来改变组件的位置和大小.而相对定位则不同,相对定位是参考组件周围的元素来确定组件的大小或…
一.概要 通过对iOS8界面布局的学习和总结,发现autolayout才是主角,autolayout是iOS6引入的新特性,当时还粗浅的学习了下,可是没有真正应用到项目中.随着iOS设备尺寸逐渐碎片化,纯粹的hard code方式UI布局将会走向死角,而autoresizing方式也有其局限性,所以无论如何autolayout都将成为UI布局的重要方式. 前两篇以发烧友心态对iOS8界面布局的主要元素size class和autolayout进行了探索,发现要完全掌握autolayout需要大量…
一.概要:前一篇初步的描述了size class的概念,那么实际中如何使用呢,下面两个问题是我们一定会遇到的: 1.Xcode6中增加了size class,在storyboard中如何使用? 2.auto layout该如何与size class配合来进行UI布局? 二.了解一件新事物的最好的办法就是实践,让我们揭开那神秘的面纱: 例子1.新建一个Single View Application template项目Demo1,拖拽一个newView到rootView上,并设置背景色为绿色, 然…
随着iOS8系统的发布,一个全新的页面UI布局概念出现,这个新特性将颠覆包括iOS7及之前版本的UI布局方式,这个新特性就是Size Class.Size Class配合Auto Layout可以解决所有(包括iPhone及iPad)iOS设备屏幕尺寸及屏幕旋转时候的UI适配问题 . 二.为什么要使用Size Class 直到iPhone6发布后,目前iOS设备的屏幕尺寸已经有4种了,如图: iPhone6没出现之前,还可以通过代码来适配两种尺寸的UI,但iPhone6发布后,渐渐的发现以前的方…
iOS中CollectionCiew由于多次点击,会给程序造成错误. 这个时候,我们可以用过手势类来进行判断和过滤. 但是,有一个快捷的解决方法,那就是给用户响应增加延时操作. 具体代码如下: [collectionView setUserInteractionEnabled:NO]; [collectionView performSelector:@selector(setUserInteractionEnabled:) withObject:[NSNumber numberWithBool:…
一般table view有编辑模式和正常模式,当table view进入编辑模式时,会在row的左边显示编辑和重排控件,如图 42所示的编辑模式时的控件布局:左边的editing control有表 61的两种图标. 表 61 table view编辑控件 图标 描述 Deletion控件 Insertion控件 若table view在编辑模式时,用户点击编辑控件,那么table view会发送一系列消息给data source 和delegate对象.可以通过实现这些方法来修改table v…
Table View是UITableView类的实例对象,其是使用节(section)来描述信息的一种滚动列表.但与普通的表格不同,tableView只有一行,且只能在垂直方向进行滚动.tableView由多个section组成,而section又由行(row)组成,也可将行称为单元格(cell).Cell是UITableViewCell类的实例对象. 1 样式 UIKit框架提供了一些标准样式供设计UITableView和UITableViewCell的结构和显示外观,同时也提供一些单元格的附…
navigation controller是一种层次结构的container view controller,即其通过一个view controllers栈来管理内部的content view controllers.如图 11所示最上两层属于Navigation view的层次结构. 图 11 The views of a navigation interface 1 组成对象 Navigation Controller通过使用一些对象来实现交互的接口,用户(软件工程师)负责提供这些对象,而其…
ViewController是iOS应用程序中重要的部分,是应用程序数据和视图之间的重要桥梁.且应用程序至少有一个view controller.每个view controller对象都负责和管理一个view对象,称此对象为root view,其组织和管理以root view为根的视图层次结构. 图 11 可以将view controller分为两种类型: 1) Content:用于管理视图中的分散view控件,这些分散view控件是app中的主要实体. 2) Container:作为一种容器,…
1.App生命周期 IOS架构是由许多设计模式实现,如model-view-controller 和 delegation模式. 1.1 main函数 与其它框架类似,IOS框架的入口也是从main函数,但是无需程序猿去实现这个main函数,Xcode已经帮我们实现了,在main函数中启动UI框架,其实它是调用了UIApplicationMain函数. main函数在项目的Supporting Files/main.m文件中:  #import <UIKit/UIKit.h>  #import…
//集成UICollectionViewFlowLayout 自己写的布局 //  SJBFlowLayout.m //  自定义流水布局 // //  Created by zyyt on 16/7/20. //  Copyright © 2016年 sjb. All rights reserved. // #import "SJBFlowLayout.h" /*******分割线*******分割线********分割线*******分割线 *********分割线********…
  Swift:TangramKit: https://github.com/youngsoft/TangramKit OC:MyLayout: https://github.com/youngsoft/MyLinearLayout 简介 MyLayout是一套iOS界面视图布局框架.其内核是基于对UIView的layoutSubviews方法的重载以及对子视图的bounds和center属性的设置而实现的.MyLayout功能强大而且简单易用,它集成了iOS Autolayout和Size C…
本文为转载文章 版权归原文所有 什么是UIKit动力学(UIKit Dynamics) 其实就是UIKit的一套动画和交互体系.我们现在进行UI动画基本都是使用CoreAnimation或者UIView animations.而UIKit动力学最大的特点是将现实世界动力驱动的动画引入了UIKit,比如重力,铰链连接,碰撞,悬挂等效果.一言蔽之,即是,将2D物理引擎引入了人UIKit.需要注意,UIKit动力学的引入,并不是以替代CA或者UIView动画为目的的,在绝大多数情况下CA或者UIVie…
前言 iOS7是目前iOS史上最颠覆的一次改版. 它的出现令人兴奋,因为它将会带我们进入一个全新的时代: 它的到来也让我们忧心,因为它颠覆了一切,包括我们过去做过的很多努力. 但是,相信大家乐意为这个全新时代做更多的努力,因为,它值得期待.   最近打算写一系列针对iOS7新特性的文章,今天就从最基本和简单的页面布局开始吧.     从头说起 当我看见iOS7那个半透明设计的navigationBar,已经有种不详的预感. 因为要透过navigationBar看到底下滚动的内容,那么底下的内容必…
最近在对公司的一个老项目进行版本升级,添加了导航栏和tabBar,并且在个人中心界面隐藏navigationBar,于是在控制器里添加了如下对象方法: - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; // 隐藏导航栏 [self.navigationController setNavigationBarHidden:YES animated:YES]; } 但是,随之出现的问题是,self.view…
说句老实话,UICollectionView真的太强大了,而且要掌握高级部分是相当困难的.至少笔者是这么认为的,如果觉得自己比较厉害,可以轻而易举地掌握UICollectionView的使用的,希望可以总结点经验! 本篇文章是在练习如何使用UICollectionView进行网格布局.网格布局是非常常见的UI布局,在很多的App中都这么设计过.本篇文章只讲如何实现风格布局,demo中有一些是优化方面的,会单独写一篇文章讲解如何优化网格布局中的图片. 实现效果 FlowLayout 本demo中需…
前言 最近项目中用到了类似蜂窝的六边形布局,在这里分享出来抛砖引玉,供大家参考学习.本文提供了2种思路实现效果,第一种方式使用UICollectionView实现,第二种方式使用UIScrollView实现,两种方式底层核心思想是一致的. 效果图 一.UICollectionView 由于UICollectionView自身提供很多属性,所以只需要自定义UICollectionViewFlowLayout布局,内部计算每个控件的位置就可以很轻松的实现. 核心代码 override func pr…
前言:本篇随笔会经常更新,随着本人对布局的深入学习,会不断补充新的知识.新的使用技巧.新的认识等等. 1.Autoresizing(在代码中使用) 先简单的看看下面的代码,以及左边运行出来的效果,然后后面就会对iPhone模拟器进行旋转,再看看效果,然后结合代码中的autoresizingMask属性来体会一下: 横屏之后,说明竖屏默认的frame(0,0,100,500)换到横屏之后会默认在中间一些的位置,但是因为上面设置autoresizingMask属性是左边和上边自动伸缩: 以上就是基本…