当前位置: 首页 > news >正文

iOS-关于autoresizingMask在7.x及以下版本的一个bug

例如:

在viewController中添加一个子控制器,并设置自控制器view的autoresizingMask

[self addChildViewController:childViewController];

childViewController.view.frame = self.view.bounds;

childViewController.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

[self.view addSubview:childViewController.view];


当关闭自控制器的时候在viewController上将其移除:

[childViewController.view removeFromSuperview];

[childViewController removeFromParentViewController];


第一次操作添加和删除时是没有问题的,但是第二次添加后执行removeFromSuperview方法时就会报错,





有上述信息可以大概发现可能是autoresizing的问题,所以我将添加子控制器地方的代码改为:

[self addChildViewController:childViewController];

[self.view addSubview:childViewController.view];

childViewController.view.translatesAutoresizingMaskIntoConstraints = NO;

NSDictionary *views = @{@"child":childViewController.view, @"view":self.view};

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[child]-0-|" options:0 metrics:nil views:views]];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[child]-0-|" options:0 metrics:nil views:views]];

或者是使用一下方式也是可以的:

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:<#(nonnull id)#> attribute:<#(NSLayoutAttribute)#> relatedBy:<#(NSLayoutRelation)#> toItem:<#(nullable id)#> attribute:<#(NSLayoutAttribute)#> multiplier:<#(CGFloat)#> constant:<#(CGFloat)#>]] 


此问题只出现在7.x系统及以下版本中,8.0以上系统没有这个问题,至于为什么,我也不清楚...可能是苹果自己的bug吧,8.0以后修复了而已.所以如果使用autoresizingMask的同学在8.0以前版本上时,请多留意.

转载于:https://juejin.im/post/5a3115186fb9a045117120ae

相关文章:

  • XV Open Cup named after E.V. Pankratiev. GP of Three Capitals
  • View 和Activity生命周期
  • Swift 2 0 如何替代 pch
  • 使用阿里云Maven镜像的正确姿势
  • 高德地图系列web篇——目的地公交导航
  • iOS 错误提示 [NSTaggedPointerString countByEnumeratingWithState objects
  • Android Fragment 从源码的角度去解析(上)
  • 数据结构中的各种排序方法-JS实现
  • Asp.net缓存简介
  • Android鬼点子 使用Kotlin编写的颜色选择器
  • 合唱队形
  • 复选框提交功能
  • [cb]UIGrid+UIStretch的自适应
  • 对于软件生产能解决到痛点的容器技术就是好!Wise2C睿云智合如何运行
  • 从零开始机器学习001-线性回归数学推导
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【Linux系统编程】快速查找errno错误码信息
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 10个确保微服务与容器安全的最佳实践
  • CentOS6 编译安装 redis-3.2.3
  • es6--symbol
  • HashMap剖析之内部结构
  • Java 最常见的 200+ 面试题:面试必备
  • Java反射-动态类加载和重新加载
  • log4j2输出到kafka
  • Magento 1.x 中文订单打印乱码
  • Redux系列x:源码分析
  • SAP云平台里Global Account和Sub Account的关系
  • win10下安装mysql5.7
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 订阅Forge Viewer所有的事件
  • 聊聊flink的TableFactory
  • 前端存储 - localStorage
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 使用common-codec进行md5加密
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 我的zsh配置, 2019最新方案
  • 小程序测试方案初探
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 再谈express与koa的对比
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • Java数据解析之JSON
  • Nginx实现动静分离
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • 数据库巡检项
  • # include “ “ 和 # include < >两者的区别
  • #Lua:Lua调用C++生成的DLL库
  • (23)Linux的软硬连接
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (理论篇)httpmoudle和httphandler一览