zoukankan      html  css  js  c++  java
  • iOS UI的动态布局

    不管是做iOS还是Android的开发,我想UI这块都是个大麻烦,任何客户端编程都是如此,我们要做的就是尽量减少我们工作的复杂度,这样才能更轻松的工作。

        在ios开发中Xcode虽然自带了强大的IB(Interface Builder)用来开发UI,但这只是静态的,遇到复杂的界面还是需要用代码来动态的布局。
      1. 例如常常会有动态内容高度和宽度的计算。
      2. 几个视图的排版。
      3.还有的视图是根据内容情况进行显示的。

      比如一个商家页面有活动的时候,会显示活动,没有活动的时候这个视图是隐藏的,这样布局起来就会非常麻烦,在这里我们都可以很简单的解决,只需要几行代码而已。

        例如下面这种情况:

             

    我们经常要根据内容去动态计算控件的高度,比如一个UILabel控件,常常要显示多行内容,并且计算出总高度,如果每个UILabel要多行显示,都要写这么一段代码是非常痛苦的,看代码如下:
        

    我想大家一定写过很多这样的代码吧,那么我可以告诉你,以后你只需要写一行代码即可:

        

    当然这里只是把上面那段代码进行了封装而已,没什么大不了的,当然以后还有很多很多的这样的封装:
        

    你还在使用CGRect frame = ...,然后去设置坐标位置,宽度和高度吗?

    如果有了这个呢,left, top,bottom,right, width, height的封装,是不是布局起来更方便了呢?

    这里self 是一个UIView,当添加了label和photoView之后,调用[self autoHeight]就可以自动计算并设置self的高度。

    下面是上面几个方法的源码:

    头文件:

    实现类文件:

    在UIView作为许多子控件的容器的时候,首先我们需要动态的计算出UIView下的所有子控件的高度,并布局排列好,然后我们还要把作为容器的UIView的高度调整到刚好包裹着所有子控件,不会过矮,也不会过高,这个在开发中也是个十分麻烦的事情,这里我们要怎么做呢?

          

        看上图除了要将UILabel自适应高度(上一篇文章已讲)以外,还要将在UILabel外的那个白色的框,即一个带白色背景色的UIView的高度也进行

    自适应,如果这要写代码去做的画,也比较麻烦。

        看看下面的代码如何解决:

      

          这里显示活动内容的UILabel名字叫_huodongLabel,显示推荐内容的UILabel叫_tuijianContentLabel
         显示活动的UIView叫_secondView,  显示推荐的UIView叫_thridView,

        先计算子控件的高度,然后再计算付控件的高度,这里就能达到整个UIView自适应高度了,仅仅只需2行代码。

        代码贴出来:

        

        

    转自:http://blog.csdn.net/keezhong/article/details/20455541 感谢作者

  • 相关阅读:
    机器学习基石笔记12——机器可以怎样学习(4)
    机器学习基石笔记11——机器可以怎样学习(3)
    机器学习基石笔记10——机器可以怎样学习(2)
    机器学习基石笔记9——机器可以怎样学习(1)
    机器学习基石笔记8——为什么机器可以学习(4)
    机器学习基石笔记7——为什么机器可以学习(3)
    转)C++中extern “C”含义深层探索
    CNN图像定位与物体探测_七月算法5月深度学习班第6次课程笔记
    Python 学习之Virtualenv
    电脑使用小技巧
  • 原文地址:https://www.cnblogs.com/saytome/p/7441783.html
Copyright © 2011-2022 走看看