iOS addChildViewController时子控制器中的UI显示frame问题

GEE——土地利用分类之监督分类 利用GEE做监督分类,以武汉市为例。 训练器我们选择随机森林;数据选择Landsat-8;训练样本使用的是GEE提供的一种,它把地表分为三类:水体、植被和城市用地。 选择训练样本 用要素集来标记训练样本。每个要素都有一个landcover 的属性,0表示城市用地,1表示植被,2表示水体。 对影像进行分类 其中一部分进行分类器的训练,还有一部分留下来做精度验证。 输出影像及混淆矩阵 print(LABEL_DATA); var wuhan = ee.FeatureCollection('users/ 阅读详情

问题描述
在主控制器上添加一个子控制器,发现子控制器上的view元素的宽和高不是之前所给定的。

在ViewController里有一个childController,直接在- (void)viewDidLoad方法里添加,并设置了_childController.view.frame。

@interface ViewController ()

@property (nonatomic, strong) ChildViewController *childController;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    _childController = [[ChildViewController alloc] init];
    _childController.view.frame = CGRectMake(10, 10, 300, 300);
    [self addChildViewController:_childController];
    [self.view addSubview:_childController.view];
}

在ChildViewController里,有一个tableView

@interface ChildViewController ()

@property (nonatomic, strong) UITableView *tableView;

@end

@implementation ChildViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    self.view.backgroundColor = [UIColor brownColor];

    self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
    self.tableView.separatorStyle = UITableViewCellSelectionStyleNone;
    [self.view addSubview:self.tableView];

    [self.tableView setBackgroundColor:[UIColor lightGrayColor]];
}

发现tableView的宽和高并不是给定的300,打印了self.view的宽和高,也并不是300,而是屏幕的宽和高,但是现实上self.view的宽和高是300,见下图:

è¿éåå¾çæè¿°

箭头所指是tableView,brownColor的是子控制器的view。

为什么会出现这个问题
当调用_childController.view.frame = CGRectMake(10, 10, 300, 300);的时候,触发ChildViewController的-

(void)viewDidLoad方法执行,但是这个时候_childController.view还没被添加在父视图上呢,所以坐标是被设置

了,但是还没完成设置,也就是没有最终落地到实处。所以tableView去self.view.bounds还是取得默认的试图控制

器的宽和高,默认的宽和高是屏幕的宽和高,所以导致了上述问题。

 

解决办法
在ChildViewController的- (void)viewDidLayoutSubviews设置tableView的frame

- (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];

    self.tableView.frame = self.view.bounds;
}

è¿éåå¾çæè¿°
viewDidLayoutSubviews的执行说明子控制器已经被添加在了父控制器上了,坐标是实实在在的了,然后就正常了。

AFSim2.9.0学习笔记 —— 1、AFSim及完整工具介绍(文末附:完整afsim2.9.0源码、编译好的完整工具包、中文教材等) AFSim2.9.0学习笔记 —— 1、AFSim及完整工具介绍(附:完整afsim2.9.0源码、编译好的完整工具包、中文教材等) 阅读详情

相关推荐

教程 | 基于遥感生态指数(RSEI)模型的生态环境质量评价

使用数据:Landsat8 OLI数据,行列号:122036,时间:20210527。 使用软件:ENVI5.3、ArcGIS10.2 二、4个指数计算 下述的四个指数的计算均是通过ENVI软件中的Band math工具进行计算。 (1)绿度指数 在常用的植被指数当中,归一化植被指数 ( NDVI) 能够有效地反映植被的生长情况与植被 覆盖度等重要植被的物理性质,检测灵敏度高,能 够较为真实地展现区域的地表空间变化规律,已经得到广泛利用,本文采用 NDVI 指数来代表绿度指数。 在ENV

YW_remote的博客 1万+

addChildViewController时子控制器中的UI显示问题

问题描述 在主控制器上添加一个子控制器,发现子控制器上的view元素的宽和高不是之前所给定的。 在ViewController里有一个childController,直接在- (void)viewDidLoad方法里添加,并设置了_childController.view.frame。 @interface ViewController () @property (nonatomi...

竹毛言己 3215

《机器学习》周志华_自学记录

第一章绪论## 1.1引言机器学习所研究的主要内容,是关于在计算机上从数据中产生"模型"(model)的算法,即"学习算法"(learning algorithm).在面对新的情况时(例如看到一个没剖开的西瓜),模型会给我们提供相应的判断(例如好瓜).如果说计算机科学是研究关于"算法"的学问,那么类似的,可以说机器学习是研究关于"学习算法"的学问.## 1.2基本术语:用于预测离散值,例如将样本分为“好瓜”或“坏瓜”。:用于预测连续值,例如西瓜的成熟度(如0.95、0.37)。

2201_75296678的博客 2531

addChildViewController后 Childvc viewWillAppear 不调用的问题

addChildViewController viewWillAppear

allanGold 2140

Calibre电子书阅读器个性化样式定制指南

本文详细介绍了如何通过Calibre电子书阅读器的用户样式表功能进行深度个性化样式定制。从修改全局字体、行距、背景配色(包括深色/浅色模式)到美化代码块、引用等特殊元素,本指南提供了完整的CSS代码示例与实战技巧,帮助用户打造专属的舒适阅读环境,显著提升电子书阅读体验。

vv45678的博客 920

Windows10下RTABMAP+T265实现三维建图

win10+rtabmap+t265扫描地形

Suxiang1997的博客 3486

iOS Autolayout情况下,ViewController嵌套时,childViewController的Frame异常问题

最近项目中,使用Storyboard、AutoLayout开发,某个ViewController中嵌套了多个子ViewController,结果在将其添加到父ViewController时,出现坐标异常问题;追踪代码发现,这是由于AutoLayout状态下,获取Frame数据不准确(或时机不对)导致的,网上找了许久,取长补短,搞到了解决办法,具体如下: 分析: AutoLayout状态

Bruce's Blog 6923

【小程序】支付宝直付通解决方案

支付宝直付通是支付宝为小程序提供的一种支付解决方案,可以实现小程序中直接使用支付宝进行支付。以上是一个简单的支付宝直付通解决方案及相关代码示例。具体的使用还需要根据自己的业务需求进行定制化开发和调整。

qq_31532979的贺公子之数据科学与艺术博客,致力于科技向善,拥抱开源,要用技术的影响力来领导团队,而不是威权和职位! 1281

在UIViewController的view上添加子视图不显示

第一种方式:通过代码方式创建视图控制器UIViewController,添加子视图,需要留意创建视图的size,如果是为0是看不到的 第二种方式:xib或storyboard方式创建视图控制器UIViewController,需要留意xib是否与视图变量之间建立的关系,没有建立关系子视图是添加到视图view中,但是就是不能系显示。 如图:

dlm_211314的专栏 2217

白话讲解帕累托前沿点(Pareto Frontier)基础知识与实例解析

排除所有“劣解”,缩小决策范围;量化目标间的“权衡关系”(如“每增加1千元成本,续航提升多少小时”);支持不同场景下的个性化选择,平衡冲突目标。无论是手机选购、汽车设计,还是城市规划,帕累托前沿都是从“混乱的多目标”到“清晰的权衡”的关键桥梁,是现代决策科学中不可或缺的工具。通过数学建模,工程很多问题都可以建模成帕累托前沿求解问题,通过线性规划CPLEX、Gurobi 等优化工具,可以方便进行求解。

2138

互联网的发展简史—web

互联网是我现在生活所离不开的一个东西,但是你知道互联网的前世今生吗?本文将讲解互联网的发展史,以及很火的元宇宙概念。

yj11290301的博客 3562

UIViewController中addChildViewController的坑:viewWillAppear不调用

项目中有一个需求是,需要在一个父UIViewController中,加载一个子ViewController。我这里是用的方式是:     [self addChildViewController:_baseVC];     [self.view addSubview:_baseVC.view]; 这里有个坑就是:子viewcontroller的viewWillAppear不会被调

jlstmac的开发笔记 2728

【Android面试八股文】Android Application为什么是单例?

这道题相对简单,就是考察大家是否了解application的创建流程。的实例,它用来存储和处理整个全局变量的一些事情,它同时还是一个。为空的时候,才会创建,从而保证了它是一个单例对象。一样有自己的生命周期,但是它并没有那么复杂,因为。对象的创建过程,找出它为什么是单例的原因。全局进行一些配置,比如配置插件。的时候才会创建,所以说可以在。凭什么是单例,我们查看下。启动的时候都会创建一个。是怎么一步步创建的。是一个单例,即每一个。

字节卷动 531

addChildViewController等方法

在以前,一个UIViewController的View可能有很多小的子view,用addSubview增加了大量的子view。这些子view大多数不会一直处于界面上,只是在某些情况下才会出现,虽然这些view很少出现,但是我们却常常一直把它们放在内存中。另外,当收到内存警告时,我们只能自己手工把这些view从super view中去掉。所以在iOS 5.0及以后,iOS为UIViewControl

我的专栏 355

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

终极iOS界面开发利器:YZDisplayViewController核心功能详解

YZDisplayViewController是iOS开发中一个功能强大的自定义页面控制器框架,专门用于实现类似今日头条、网易新闻、腾讯视频等主流应用的标题滚动和内容切换效果。这款开源库为开发者提供了完整的解决方案,让你能够快速构建出专业级的iOS应用界面。 ## 📱 为什么选择YZDisplayViewController? 在移动应用开发中,多标签页切换是极其常见的UI模式。无论是新闻资

gitblog_00043的博客 327

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

CDDStore多控制器管理:父子控制器在复杂界面中的应用

CDDStore作为高仿国美商城的iOS应用,其界面包含首页、分类、商品详情等多个复杂模块。在开发过程中,如何高效管理这些模块的控制器层级关系,直接影响到应用的性能与可维护性。本文将以CDDStore项目为例,详解父子控制器模式在复杂界面中的核心应用与最佳实践。 ## 为什么选择父子控制器模式? 在传统的iOS开发中,单个控制器承载过多视图逻辑会导致代码臃肿。CDDStore通过父子控制器模式

gitblog_00734的博客 462

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

iOS添加子控制器(addChildViewController)

iOS添加子控制器(addChildViewController)

weixin_46926959的博客 2071

ios子控件超过了父控件的frame范围,超过的部分不显示

设置父控件的clipToBounds 为 YES 即可,默认为 NO. 同时还应该考虑 CALayer 的 maskToBounds 的功能是什么,类似于 clipToBounds 吗?maskToBounds 是 CALayer 的属性,基于 View 的不少属性其实就是作用于 CALayer 的。立即试验了一下,设置blueView.layer.maskToBounds = YES 与 bl

qq_26638853的专栏 4793

iOS开发之使用addChildViewController:给控制器添加子控制器

在iOS5中,ViewController中新添加了下面几个方法: addChildViewController:是UIViewController的一个方法,iOS5之后加入的,使用这个方法可以达到addsubView一样的效果,而且好处多多addChildViewController的好处: 1.无疑,对页面中的逻辑更加分明了。相应的View对应相应的ViewController。

chirs的专栏 2万+

iOS开发 剖析网易新闻标签栏视图切换(addChildViewController属性介绍)

本来只是打算介绍一下addChildViewController这个方法的,正好今天朋友去换工作面试问到网易新闻标签栏效果的实现,就结合它,用个小Demo实例介绍一下:(具体解释都写在了Demo里面的注释) [objc] view plaincopy //   //  HMTMainViewController.m   //  UIScrol

ETmanwenhan的专栏 1337

UIViewController 中的 willMoveToParentViewController和didMoveToParentViewController的使用

关于这两个方法,也是IOS5之后才加上去的。 在iOS 5.0及以后,iOS为UIViewController类添加了新的属性和方法: @property(nonatomic,readonly) NSArray *childViewControllers - (void)addChildViewController:(UIViewController *)childController

岸边的脚印 1150

使用addChildViewController时出现的问题

ios5.0之后可以使用addChildViewController  self.inboxController=[[NoticeInboxViewController alloc] initWithNibName:@"NoticeInboxViewController" bundle:nil];     [self addChildViewController:self.inb

yesjava的专栏 7462

使用addChildViewController 遇到没有加载的controller viewdidload也被调用

1、addChildViewController的用法请参考如下: http://www.xiaoyaoli.com/?p=1515&utm_source=tuicool&utm_medium=referral 2、实际使用过程中发现没有被加载的C2的viewdidload也被调用了,后来发现是因为这里设置了view的frame. 如果不设置frame. 则C2的viewdidlo

有些事情,现在不做,以后再也不会做了... 2572

addChildViewController的正确姿势

        项目中经常出现一个控制器添加多个子控制器的情况,例如今日头条的标签切换视图,使用addChildViewController的正确姿势如下:         先添加第一个控制器,其余控制器暂时不用添加: //A控制器 let vcA = ViewControllerA() self.addChildViewController(...

chokshen的博客 7938

UIScrollView添加子控制器addChildViewController是从xib加载的frame错乱问题

最近要写在parentViewController中添加childViewController  因为我的子控制器是xib搭建的  加载的时候会出现320*568这个样子的结果 因为我是 父亲->孩子->孩子结构  所以出现这样的情况   那么问题来了  最终的解决方案: - (void)viewDidLayoutSubviews { [super viewDidLayou

u013868775的博客 1536

addChildViewController时viewDidAppear方法得不到调用的问题

今天遇到一个无比诡异的问题,原因在于viewDidLoad方法得到调用,而viewDidAppear方法得不到调用,导致viewDidAppear方法中的代码得不到执行。本文写了个Demo,完整地模拟了这个场景。

Jymn_Chen 6066
上一篇: iOS 获取字符串的限制宽或者高求另一个的float
下一篇: iOS 动态修改app 图标-icon
Cao_Shixin攻城狮
博客等级 码龄10年 710粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值