`

IOS类似android的view.gone/view.visable

    博客分类:
  • IOS
 
阅读更多

IOS 不像android一样,有神view。gone的方法,可以既隐藏当前控件,也可以使底下控件上移。因此,这个自己写个方法:

例如:

//类似于android里的View.Gone
- (void)ViewGone:(UIView *)senderView{
    if (senderView.hidden == NO) {
        senderView.hidden = YES;
        //获取源控件的View
        NSInteger targetY = senderView.frame.origin.y;
        NSInteger targetHeightY = senderView.frame.origin.y+senderView.frame.size.height+10;
        //
        //    NSLog(@"%d",targetY);
        BOOL isHidden = senderView.hidden;
        if (isHidden) {
            for (UIView *view in self.view.subviews) {
                //            NSLog(@"%@",view);
                NSInteger tempY = view.frame.origin.y;
                //如果遇到view的Y坐标等于目标的Y坐标,且不为hidden的话,则暂停,恐会覆盖调
                if(tempY == targetY && !view.hidden){
                    break;
                }
                if (tempY >= targetHeightY ) {
                    if ([view isMemberOfClass:[UIImageView class]]) {
                        continue;
                    }
                    
                    //上移到目标位置,达到隐藏的效果
                    CGRect tmpFrame = CGRectMake(view.frame.origin.x, view.frame.origin.y-senderView.frame.size.height-10, view.frame.size.width, view.frame.size.height);
                    view.frame = tmpFrame;
                }
            }
            //senderView = nil;
            
        }
    }
    
}

 同理,显示出来的效果是:

//类似于android里的View.Gone
- (void)ViewVis:(UIView *)senderView{
    if (senderView.hidden == YES) {
        
        senderView.hidden = NO;
        //获取源控件的View
        NSInteger targetY = senderView.frame.origin.y;
        NSInteger targetHeightY = senderView.frame.origin.y+senderView.frame.size.height+10;
        //
        //    NSLog(@"%d",targetY);
        BOOL isHidden = senderView.hidden;
        if (!isHidden) {
            for (UIView *view in self.view.subviews) {
                //            NSLog(@"%@",view);
                NSInteger tempY = view.frame.origin.y;
                //如果遇到view的Y坐标等于目标的Y坐标,且不为hidden的话,则暂停,恐会覆盖调
                if(tempY == targetY && !view.hidden && view != senderView){
                    if ([view isMemberOfClass:[UIImageView class]]) {
                        continue;
                    }
                    
                    //上移到目标位置,达到隐藏的效果
                    CGRect tmpFrame = CGRectMake(view.frame.origin.x, view.frame.origin.y+senderView.frame.size.height+10, view.frame.size.width, view.frame.size.height);
                    view.frame = tmpFrame;
                }
                if (tempY >= targetHeightY) {
                    if ([view isMemberOfClass:[UIImageView class]]) {
                        continue;
                    }
                    
                    //上移到目标位置,达到隐藏的效果
                    CGRect tmpFrame = CGRectMake(view.frame.origin.x, view.frame.origin.y+senderView.frame.size.height+10, view.frame.size.width, view.frame.size.height);
                    view.frame = tmpFrame;
                }
            }
            //senderView = nil;
            
        }

    }
}

 

分享到:
评论
1 楼 hyc_willie 2015-04-15  
技术大牛 

相关推荐

    Set_Color_Visable.rar_site:www.pudn.com_变颜色_滑条_透明度

    在本文中,我们将深入探讨如何使用VC++编程语言来实现颜色变化及透明度调整功能,主要基于提供的标题“Set_Color_Visible.rar”和描述中的关键点。首先,我们需要理解颜色和透明度的基本概念,然后我们将详细讲解...

    Unity3D android 拉起android软键盘

    Unity3D android 拉起android软键盘 最近公司项目有一个手机VR展厅业务,用U3D做VR场景还可以做到,后面要加个2D的线下预定页面,就涉及到3D 2D界面转换,首先考虑u3d作为插件,不考虑升级客户端,更新U3D资源来升级...

    android模拟post登陆(带验证码)

    在Android开发中,有时我们需要模拟用户登录到一个网站,尤其是那些使用POST方法提交表单数据并且包含验证码的网站。这个过程涉及到网络请求、数据解析、验证码处理等多个环节。以下是关于这个主题的详细知识点: 1...

    WinForm实现最小化到系统托盘方法实例详解

    2、拉个NotifyIcon控件,将属性Visable设置成False,在Text属性上随便填些文件。 3、实现Form的SizeChanged事件,代码如下: if(this.WindowState == FormWindowState.Minimized) //判断是否最小化 { this....

    visable analyst

    Visible Analyst是一款强大的信息系统开发工具,它专为业务分析师和IT专业人员设计,旨在简化和加速系统分析、设计以及数据建模的过程。这款软件的核心功能包括流程建模、数据建模、需求管理以及系统架构设计,使得...

    vue-visible-VueJS(2.x)的v-visible指令,类似于v-show但具有可见性。-Vue.js开发

    https://jsfiddle.net/fcpc6utm/关于此插件为VueJS(2.x)演示添加了v-visible指令VueVisible v-visible指令jsFiddle实时演示:https://jsfiddle.net/fcpc6utm/关于此插件添加了一个v-visible指令(类似于本机v-show...

    Android代码-CenterScaledRecyclerView

    A RecyclerView demo that central item can be scaled. ...just use the method to set the visable item number: setMaxVisableItemNum(int maxItemNum) Note: the maxItemNum should be an odd number.

    天才、正常和轻度弱智儿童的自尊

    visable in this district and should not be encouraged by administrators or teachers as a means of ensuring better academic performance. REFERENCES DIETZ, C. H., & WILSON, B. J. (1985). Beginning ...

    Self-Esteem of gifted, normal, and mild mentally handicapped children

    visable in this district and should not be encouraged by administrators or teachers as a means of ensuring better academic performance. REFERENCES DIETZ, C. H., & WILSON, B. J. (1985). Beginning ...

    深入理解C11C++11内存模型.doc

    3. 操作的可见效果(Visable effects of operations):确保一个线程的操作对其他线程可见,即内存同步。 不同的CPU体系结构有不同的内存顺序模型: - x86_64和SPARC采用强顺序模型(Total Store Order,TSO),它保证...

    12月考试可视化程序设计VBB卷.pdf

    - **B、时钟控件的 Visable 属性设为 True 时**:应该为Visible而非Visable,当该属性为True时,时钟控件在程序运行时是不可见的,而不是可见的。 - **C、在列表框中能够将项目按字母顺序从大到小排列**:列表框...

    2048_行坤.rar

    每个picturebox初始的visable属性都设为false,即所有的方块初始不可见; 每个picturebox的tag属性记录该块的数字; 使用随机数产生随机位置与随机数(2或4); 将此位置picturebox的图片更新,并更新tag,...

    该模块作为C#操作Excel的基类使用

    ExcelHelper(string template, string path, bool Visable) 构造函数,调用CreatExcel void CreatExcel(string template,string path,bool Visable) 创建Excel表格 void SelectSheet(int index) 选择sheet工作表 ...

    element form 校验数组每一项实例代码

    1.校验的数据结构如下:  2.html结构 visible.sync=visable width=40% before-close=cancel> <el label=Id prop=id v-if=formData.id>

    .NET使用js制作百度搜索下拉提示效果(不是局部刷新)实现思路

    搞了个不是局部刷新的百度搜索框下拉提示效果,在被领导批了n次后,问了n次后,弄出来了,真心感觉我这个小脑壳,太不灵光了,太懒了。记录下来,以免忘记。 大致思路:前台放一个...但是这里的隐藏不是使用visable来

Global site tag (gtag.js) - Google Analytics