一、removeFromSuperview方法, 1.从1个View里删除一个控件, 这个方法的签名如下: - (void)removeFromSuperview; 从父控件中移除, 假如说这里有一个父控件,有一个子控件, 你希望把这个子控件从父控件里移除, 这时候,你希望让谁移除,那就调这个子控件自己的,removeFromSuperview, 就是说,我们想把谁干掉,得让它“自杀” 你不能去“杀它”, 比如说,在上一篇文章的例子中, 点最下面这个按钮的时候,文本框的内容会变成@“试试看”吧, 最下面这个按钮的单击事件如下: - (IBAction)show:(id)sender{ UITextField *txt = (UITextField *)[self.view viewWithTag:1000]; txt.text = @“试试看”; } 现在界面上有6个子控件,1个文本框,1个按钮,1个标签,1个按钮,1个View容器,1个文本框 我希望一点最下面这个按钮的时候,把这些子控件全都移除掉, 把这个View下的所有子控件全都移除掉, 其实这儿是不是还有一个黄色的大View啊, 最下面这个文本框算这个大View的子控件吗,不算, 算它的孙控件, 2.这是我们控制器所管理的大View吧 这个大View里面有几个子控件呢, 1个文本框,1个按钮,1个标签,1个按钮,1个黄色的View, 5个子控件, 这个大View只有5个子控件, 最下面那个文本框,不是这个大View的子控件, 是这个大View的孙控件, 所以说,这个大View只有5个子控件, 我希望当点最下面这个按钮的时候, 把这个大View的所有子控件全都删掉, 删掉以后,这个大View里面,就没有控件了吧, 这个时候怎么做, 在最下面这个按钮的单击事件里面, - (IBAction)show:(id)sender{ //code; } 首先,我这self.view, 是不是我们这个控制器所管理的那个大View吧 它里面有个subviews, self.view.subviews, 是不是里面所有的子控件的数组集合, 我们数组有一个方法叫做 lastObject, 或者说,也有一个方法,叫做firstObject, 是不是1回事儿, lastObject,获得最后一个元素, firstObject,获得第一个元素吧, 这两个方法的签名如下: id lastObject id firstObject 那么,它只要里面还有任何一个元素, 只要有这个子元素,它获取的就不是nil吧 既然不是nil,它就不是false, 所以我可不可以把它作为一个条件,放到这儿, while(self.view.subviews.firstObject){ statements; } 只要当前这个view里面的子控件,只要有任何一个子控件,它就不是nil, 只要不是nil,我就让它当前,这个view里面的子控件里面的第一个元素, self.view.subviews.firstObject, 第一个元素,让它,removeFromSuperview, while(self.view.subviews.firstObject){ [self.view.subviews.firstObject removeFromSuperview]; } 这样的话,这个控制器所管理的这个View里面,只要有1个子控件,我就把它删一个,有一个删一个, 最后就都怎么样了,是不是都删完了, 点一下最下面这个按钮,是不是都删掉了, 这就是我们这个方法, removeFromSuperview, 就是把一个子控件从父控件中移除了, 二、图片浏览器控件, 1.这就是图片浏览器, 2.这就是图片浏览器,仔细观察一下这个效果, 首先,这里是不是有一张图片吧, 上面有个“1/6”, 说明一共有几张图片,6张吧, 这是第几张,当前这儿,第一张吧, 左边还能往前吗, 不能,因为这已经是第一张了, 然后看一下,向右, 右边是不是能点, 点一下,是不是按下去是绿色的吧, 松开,是不是第二张, 第二张,这也是一张图片,第二张, 再往后,是不是还能再点, 再点,这是不是又是1张, 再点,是不是又是1张, 再往后点,又是一张, 点到第一张,向左,不能点了, 点到最后一张,向右,不能点了, 那么,大家分析一下,这个效果里面,用到了几个控件, 1)最上面一个Label,用来显示“1/6” 2)中间的图片,这是按钮,还是按钮,还是专门用来显示图片的图片框, 这个大家用按钮也可以做,但是这个地方,我们用的是图片框, 为什么呢,因为这个不能点,也没有文字, 所以它就是一个普通的图片框,就OK了, 这儿就不需要用按钮了, 所以说,当我们看到一张图片的时候,到底应该用图片框,还是按钮, 取决于,它是只有1个图片吗,它能点吗,它有文字吗, 如果是,又有图片,又有背景图片,还能点,又有文字, 这就一定是按钮, 如果仅仅是一个图片,也不能点,这个时候就是用图片框,就OK了, 所以我们这里用的是一个图片框, 3)向左的按钮, 4)向右的按钮, 5)最下面的标签, 所以说,这个效果需要5个控件, 两个Label,1个图片框,2个按钮, 三、实现图片浏览器效果, 1.首先,我们是不是要把素材先拖进来, 咱们等会儿再拖素材吧, 先把这个界面的控件摆好, 1个Label, 1个图片框, 1)先把1个Label拖上来, 给它写个文字,“1/6” 2)下面有一个图片框,哪个是图片框呢,看到这个了吗,Image View, 是不是里面有一张风景这个图片的控件吧, 这就是图片框,把它拽过来, 3)然后,下面是不是还有个Label, 我们下面再来个Label, 选中第一个Label,按住option键,拖下来, 我想让这个Label居中,怎么办, 这个View整体的宽度,是多少,选中列表中View这个控件,看一下右边的属性, width,320,height,568,吧 这个Label,width是220, 怎么样让这个Label居中, 320-220是多少,100 100除以2是多少,50, 所以这个Label,距离左边,应该是50,这样的话,它就居中了, 我要里面的文字居中,怎么办, 设置这个Label的Alignment等于“居中”, 是不是文字就居中了吧, 最下面这个标签,把文字改成“标题”, 4)好了,有了这些以后,左右还需要两个按钮吧 先把UIImageView的大小设置一下,让它也居中,width,225,height,225, 最大的View,width,375,减去225,还剩150,所以,这个UIImageView的x,设置为75,就居中了, 左边拖进来一个按钮,咱们设置这个按钮有一个背景图吧, 把素材拷进来,素材,Arrow文件夹,有个“左右”就可以了, 把这个Arrow文件夹,拖到Xcode的Assets.xcassets文件夹里, 这样,我们就有了“左”箭头,禁用状态下的、高亮状态下的、默认状态下的,图片 也有了“右”箭头,禁用状态下的、高亮状态下的、默认状态下的,图片 一共6张图片, 好了,这时候,我们选中“左”这个按钮, 设置它的文字,为“”,空,没有文字, Type,设置为Custom, State Config,设置为Default, Background,设置为left_normal, State Config,设置为Highlighted, Background,设置为left_highlighted, State Config,设置为Disabled, Background,设置为left_disabled, 它的大小是多少,设置为width,48,height,48, 然后呢,选中这个