精华内容
下载资源
问答
  • iOS布局

    千次阅读 2021-03-12 17:07:28
    2021年也在奋力的学习iOS开发呀,一些自己踩到的小坑也可以说是常用解决方案吧,记录分享。 1.UIButton设置图片后点击无响应 UIButton点击无响应的原因有很多,最近我遇到一个问题是因为设置图片尺寸过小的原因。 一...

    前言

    2021年也在奋力的学习iOS开发呀,一些自己踩到的小坑也可以说是常用解决方案吧,记录分享。

    1.UIButton设置图片后点击无响应

    UIButton点击无响应的原因有很多,最近我遇到一个问题是因为设置图片尺寸过小的原因。

    一次UI改版中,漂亮的UI小姐姐给的Button切图比以前的切图要小很多,没关系,我是自己长大的程序员,我可以设置Button属性为setBackgroundImage,就可以根据尺寸随意调整大小啦;OK,Button的样式显示非常nice!

    Button点击事件调试中,为什么触发率这么低?偶尔点得到、偶尔点击无响应?聪明的我很快意识到是因为Button的尺寸太小而点击不到,如果把button尺寸放大,bgImage尺寸失调不符合UI、如果设置为setImage属性UI切图过小也不行,程序员为难;是找UI小姐姐重新切图还是另寻方法?

    解决方案:

    • 设置图片为ImageView,调整图片大小;
    • 将图片添加到Button上,完美解决。

    如果是你,你会找UI小姐姐重新切图还是独自长大?

    2.TableView中嵌套CollectionView滑动冲突

    一个合格的程序员总会被UE安排各种混合布局的页面,她想要的样子,我这里都有!

    表格布局和流水布局离不开最核心的就是它的滑动,这次遇到的问题比较简单,均是上下滑动、只让tableview滑动,但是滑动时有两个滑动条,设置CollectionView.scrollEnabled = NO;即可。

    3.CollectionView的高度自适应

    百度一通,全部给我cell如何自适应高度,然后教我如何计算cell的高度!不是不是,
    在我复杂而美丽的布局页面中,collection中的section是实时更新的,即collectionView的高度会变化,前面说了嵌套,同时我需要在tableview中根据collectionview的高度变换,实时刷新整个UI布局。

    关键点:

    1. 设置collectionView布局时,上下左右设置约束即可
    [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.view);
        make.left.right.equalTo(self.view).offset(0);
        make.bottom.equalTo(self.view);
    }];
    
    1. 获取collectionview本身的高度:
    CGFloat height = _collectionView.collectionViewLayout.collectionViewContentSize.height;
    
    1. 将高度传给tableview
    @property (nonatomic,copy) void (^refreshCollectionViewHeight)(CGFloat height);
    
    if(self.refreshCollectionViewHeight){
    	self.refreshCollectionViewHeight = height;
    }
    
    1. 刷新高度
    self.collectionView.frame = CGRectMake(0,0,500,400);//随意设置一个高度
    self.collectionView.refreshCollectionViewHeight = ^(CGFloat height){
    	self.collectionView.frame = CGRectMake(0,0,500,height);
    }
    [self.tableView reloadData];//刷新视图
    

    现在就很丝滑,是UI想要的样子!

    展开全文
  • ios 布局工程例子,可以像android一样布局ios 布局工程例子,可以像android一样布局ios 布局工程例子,可以像android一样布局ios 布局工程例子,可以像android一样布局ios 布局工程例子,可以像android一样布局ios...
  • iOS布局-autoresizingMask

    千次阅读 2020-04-17 14:56:58
    iOS布局-AutoresizingMask 前端的主要任务简单来看,就是绘制界面,绑定数据。在iOS绘制界面的布局方式主要有以下三种: frame autoresizingMask AutoLayout fame:常用于绝对布局,通过设置x, y, width, height来...

    iOS布局-AutoresizingMask

    前端的主要任务简单来看,就是绘制界面,绑定数据。在iOS绘制界面的布局方式主要有以下三种:

    1. frame
    2. autoresizingMask
    3. AutoLayout

    fame:常用于绝对布局,通过设置x, y, width, height来确定控件的位置和大小。

    autoresingMask:苹果早期的相对布局的方案,允许子视图跟随父视图变化而变化,比如按比例缩放宽高,按比例缩放边距,仅限于两个视图之间使用,需要fame配合使用[不建议代码使用,可以在xib中使用]。

    AutoLayout:iOS6引入基于关系的相对布局方式,允许视图与另外一个或者多个视图保持约束关系,可以在多个视图间使用,但是建议参考父视图添加约束,系统可以自动将frame转为约束。

    Waring: 同一个视图,不能同时使用autoresizingMask和AutoLayou,比如视图A不能左边关系使用autoresizingMask,高宽布局使用AutoLayout。但是允许同一父视图,不同子视图使用autoresizingMask或者AutoLayout

    AutoresizingMask理解

    与frame绝对布局不同,autoresizingMask允许子视图的大小和位置跟随父视图动态变化,比如像UIButtion内部哪些子控件就使用autoresizingMask来布局达到适应效果。

    借助xib我们可以形象理解autoresizingMask。

    设置子视图与父视图宽高等比例变化效果图如下:

    宽高等比例

    设置等比例高度变化,底边距等比例间距,效果如下

    底边距等比例变化

    通过上面的 gif 我们能轻松理解autoresizingMask的布局特点。就是可以设置等比例变化,达到视图自适应变化。

    autoresizingMask支持 xib 和代码。

    UIViewAutoresizing枚举值

    在autoresizingMask中,通过控制UIView的autoresizingMask属性控制,包含以下枚举值:

    布局关系 视图随父视图等比例变化
    none 默认值,不会随父视图改变而改变
    flexiableLeftMargin 子视图左边距,等比例变化
    flexiableWidth 子视图宽度,等比例变化
    flexiableRightMargin 子视图右边距,等比例变化
    flexiableTopMargin 子视图上边距,等比例变化
    flexiableHeight 子视图高度,等比例变化
    flexiableBottomMargin 子视图底边距离,等比例变化

    Tips: flexiable表示灵活的、可自适应的、弹性的意思

    实际设置往往需要组合这几个枚举值达到要求。

    注意:在xib的Size Inspector的autoresizing中也可以设置对应关系(而且很简单),但是表达方式可能不一样,对于边距,在xib中选中表示不变的边距 , 对于宽高,选中表示等比例变化的。如下图

    左边距和上边距固定

    代码枚举值却是:[.flexibleTopMargin, .flexibleRightMargin]

    xib/StroryBoard使用autoresizingMask

    通过xib设置autoresizingMask很简单,也很直观,当你选择完后,鼠标放在上面就会有动效,可以观察到是不是自己想要的效果。

    比如实现这个需求:label在不同尺寸的屏幕上,自适应变化宽高,等比例设置左右边距,但是顶部边距不变,达到不同设备相似视觉感。

    首先在storyboard中,以SE屏幕Controller为参考设置想要的frame,设置automask,如下图:

    label宽高自适应

    实际运行显示,根据不同屏幕,label的左右边距等比例缩放,且自适应宽高。效果图如下

    效果

    代码布局使用autoresizingMaskt

    关于在代码中使用autoresizingMask,我是百思不得其解,感觉设置了也没有起到效果,感觉就像设置了还要自己算frame,不像在xib中设置了来得实际。

    参考:自动布局值autoresizingMask使用详情

    不建议使用,感觉理解起来很复杂。

    展开全文
  • ios 布局预览

    2016-09-19 16:08:51
    1.完成布局 打开辅助编辑器 command+alt + enter    2.将辅助编辑器改为Manual    3.点击修改的地方,选择Preview ;即Manual -- > Preview     4.上图即为布局的预览,左下脚的加号可以添加不同尺寸的...

      1.完成布局 打开辅助编辑器  command+alt + enter

       

      2.将辅助编辑器中Automatic改为Manual

       

       3.点击修改的地方,选择Preview ;即Manual -- > Preview 

        

      4.上图即为布局的预览,左下脚的加号可以添加不同尺寸的屏幕的布局预览

    展开全文
  • 一套功能强大的iOS布局库,他不是在自动布局的基础上进行的封装,而是一套原生的基于对frame设置的封装,通过重载layoutSubview函数来实现子视图的布局,因此可以无限制的运行在任何版本的iOS系统中。其设计思想以及...

    功能介绍

    一套功能强大的iOS布局库,他不是在自动布局的基础上进行的封装,而是一套原生的基于对frame设置的封装,通过重载layoutSubview函数来实现子视图的布局,因此可以无限制的运行在任何版本的iOS系统中。其设计思想以及原理则参考了android的布局和iOS自动布局以及SizeClass的功能,而比android的布局库以及iOS的自动布局库功能更加强大,使用则方便简单,其分别提供了:线性布局MyLinearLayout相对布局MyRelativeLayout框架布局MyFrameLayout表格布局MyTableLayout流式布局MyFlowLayout五个布局类,各种类应用的场景不大一样,具体的使用方法请看Demo中的演示代码以及到我的CSDN主页中了解:

    http://blog.csdn.net/yangtiang/article/details/46483999 线性布局
    http://blog.csdn.net/yangtiang/article/details/46795231 相对布局
    http://blog.csdn.net/yangtiang/article/details/46492083 框架布局
    http://blog.csdn.net/yangtiang/article/details/48011431 表格布局

    线性布局MyLinearLayout

    线性布局分为垂直线性布局和水平线性布局,其中垂直线性布局中的子视图总是按照添加的顺序依次从上到下排列,而水平线性布局中的子视图则按照添加的顺序依次从左到右进行排列。这种布局中的子视图之间不需要设置任何依赖关系,因此是最简单也是最常见的一种布局方式。
    

    相对布局MyRelativeLayout

    相对布局就是实现了iOS的自动布局功能的一种布局方式,但是比自动布局功能更加强大,更加容易使用。相对布局中的子视图必须要设置视图与视图之间的依赖关系以及视图与布局视图的依赖关系,也就是需要设置视图自身上下左右的依赖关系以及高度和宽度的依赖关系。对于一些不规则的布局则最好使用相对布局。
    

    框架布局MyFrameLayout

    框架布局,故名思议要求布局必须设定明确的高度和宽度值,而且里面的子视图只能布局在框架布局的上中下以及左中右的某个具体的位置上,框架布局支持子视图之间的重叠排列。因此框架布局一般是用来做根布局使用。
    

    表格布局MyTableLayout

    表格布局,是一种增强的线性布局,也分为垂直表格和水平表格,表格布局必须要先添加一行,然后再在当前行上进行单元格视图的添加,表格布局的风格类似于HTML页面的表格实现机制,表格布局用于那些有规律的子视图的排列,以及可以用于实现瀑布流的效果。
    

    流式布局MyFlowLayout

    流式布局是一种限定了行数或者列数的布局,同样分为垂直流式布局和水平流式布局,对于垂直流式布局来说,需要设定每行的子视图数量,设定后子视图依次从左到右,从上到下依次排列,流式布局一般用于子视图有规律的排列。
    

    演示效果图

    演示图

    V1.1.0版本新功能

    1. 增加了新布局流式布局MyFlowLayout。
    2. 线性布局添加了gravity停靠设置的屏幕水平居中和屏幕垂直居中的功能。
    3. 添加了设置布局视图背景图片backgroundImage和高亮背景图片highlightedBackgroundImage的功能。
    4. 添加了视图偏移约束的最大max最小值min限制,以及尺寸约束时的最大max最小值min限制。
    5. 添加了布局尺寸评估方法estimateLayoutRect以及视图的评估rect值的功能。
    6. 添加了框架布局中的子视图的高度和宽度设置功能,可以让高度或者宽度设置为父视图的高度或者宽度的缩放比例,可以设置高度和宽度相等等功能。
    7. 添加了线性布局均分视图设置边距subviewMargin的功能。
    8. 添加了在布局中让某个子视图不参与布局的功能,只要将useFrame设置为YES即可。
    9. 添加了布局视图设置按下事件setTouchDownTarget,按下被取消setTouchCancelTarget的事件功能。
    10. 添加了线性布局均分时的间距值设置功能averageSubviews。
    11. 添加了清除视图布局设定的方法resetMyLayoutSetting。

    BUG修复

    1. 修复了布局占用大量内存的问题。
    2. 修改了布局内添加UIScrollView时橡皮筋效果无效的问题。
    3. 优化了一些约束冲突的解决。
    4. 优化了布局视图添加到非布局视图时的位置和尺寸调整功能。
    5. 修正了子视图恢复隐藏时的界面不重绘的问题。
    6. 修正了布局边界线的缩进显示的问题。
    7. 修正UITableView,UICollectionView下添加布局可能会造成的问题。

    FAQ

    1. 如果使用布局运行时造成CPU的100%占用则表示出现约束冲突了,请检查子视图约束的设置。
    2. 为支持布局而扩展的视图属性只对放在布局内才完全有效,如果在布局视图之外设置则无效。
    3. 如果将布局视图放在非布局视图之中则只有部分属性有效,如果同时设置了leftMargin和rightMargin则表示设置自身的宽度,如果同时设置了topMargin,bottomMargin则表示设置自身的高度。
    4. 如果设置wrapContentWidth,和wrapContentHeight的话,而又设置高度和宽度话可能会引起布局冲突。
    5. 自动布局并不是不用设置位置和高宽,而只是通过一些手段或者关联减少设置绝对位置和高度而已。


    展开全文
  • iOS 布局方式汇总

    千次阅读 2016-10-17 15:27:27
    作为iOS UI开发人员,为了适配多种机型以及横竖屏,【布局】的概念是再熟悉不过的,iOS布局发展到今天主要有以下几种方式: 1.Absolutely Position 2.AutoResizing 3.NSLayoutConstraint 4.UIStackView   ...
  • IOS 布局约束法则

    2019-09-05 17:13:48
    NSLayoutConstraint:布局约束 NSContentSizeLayoutConstraint:布局约束 NSLayoutConstraint:布局约束 NSLayoutConstraint:布局约束
  • iOS布局格式语言(Visual Format Language)   常见符号  H: 水平布局(默认) V: 垂直布局 | superView的边界,水平布局模式下,放在左边是左边界,放在右边...
  • IOS布局入门必看

    2017-07-14 10:41:34
    转自:(一)http://ddc.dianrong.com/?p=597 (二)http://ddc.dianrong.com/?p=1257 (三)http://ddc.dianrong.com/?p=2367
  • 这次记录一下关于自动布局的例子, 1.创建一个Single View Application : 2.选择自动布局: 3.拖拽两个TextField和一个按钮到视图中,把他们放在屏幕的水平位置的中央,运行: 手机竖屏的时候,很好看: 横...
  • iOS布局和屏幕适配的一点总结

    千次阅读 2015-05-18 19:27:21
    曾经,iOS开发是不需要考虑屏幕适配问题的,因为只有一种屏幕尺寸。而现在已经有了4种屏幕,4,5,6,6P,因此屏幕适配也成了iOS开发中必须考虑的问题。并且,这4种屏幕的宽高比全部都不一样,所以简单的按比例缩放...
  • ...1.将一个试图放置在其父视图的中央位置,使用限制条件。...2.创建两个限制条件:一个是将目标视图的 center.x 位置排列在...IOS布局笔记二( Visual Format Language 定义水平和垂直约束)
  • Linux编程点击右侧关注,免费入门到精通!作者丨indulge_inhttps://www.jianshu.com/p/02a1cd16cc06前言iOS 开发发展至今...
  • ios上做了一个简单的页面头部置顶底部置顶源码如下: Title *{ margin: 0; padding: 0; } .top{ position: fixed; top:0;
  • make.centerX.mas_equalTo(self.view.center.x); make.centerY.mas_equalTo(self.view.center.y);
  • 先来看看一般的布局,比如LinearLayout 首先自定义一个LinearLayout,重写computeScroll、onTouchEvent等方法,在onTouchEvent中判断手势,如果手指抬起,则LinearLayout回到顶部,如果是其他的,则控件随着手指滚动...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 89,406
精华内容 35,762
关键字:

ios布局