pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

viewWillAppear: 和 viewDidAppear: 之間的視圖框架變化

View frame changes between viewWillAppear: and viewDidAppear:(viewWillAppear: 和 viewDidAppear: 之間的視圖框架變化)
本文介紹了viewWillAppear: 和 viewDidAppear: 之間的視圖框架變化的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!

問(wèn)題描述

我在我的應(yīng)用程序中發(fā)現(xiàn)了一個(gè)奇怪的行為,其中連接的 IBOutlet 在我的視圖控制器中對(duì) viewWillAppear: 的調(diào)用之間具有其連接的視圖框架viewDidAppear:.這是我的 UIViewController 子類中的相關(guān)代碼:

I have discovered a strange behavior in my application, where a connected IBOutlet has its connected view's frame between the calls in my view controller to viewWillAppear: and viewDidAppear:. Here is the relevant code in my UIViewController subclass:

-(void)viewWillAppear:(BOOL)animated {
    NSLog(@"%@", self.scrollView);
}

-(void)viewDidAppear:(BOOL)animated {
    NSLog(@"%@", self.scrollView);
}

以及生成的日志輸出:

MyApp[61880:c07] <UIScrollView: 0x1057eff0; frame = (0 0; 0 0); clipsToBounds = YES; autoresize = TM+BM; gestureRecognizers = <NSArray: 0x10580100>; layer = <CALayer: 0x1057f210>; contentOffset: {0, 0}>
MyApp[61880:c07] <UIScrollView: 0x1057eff0; frame = (0 44; 320 416); clipsToBounds = YES; autoresize = TM+BM; gestureRecognizers = <NSArray: 0x10580100>; layer = <CALayer: 0x1057f210>; contentOffset: {0, 0}>

這清楚地表明框架在兩次調(diào)用之間發(fā)生了變化.我想在 viewDidLoad 方法中對(duì)視圖進(jìn)行設(shè)置,但如果內(nèi)容在屏幕上之前無(wú)法更改,那似乎毫無(wú)用處.會(huì)發(fā)生什么?

Which clearly shows that the frame is changing between the two calls. I wanted to do setup with the view in the viewDidLoad method, but if the content is not available for me to change until it is on the screen, that seems pretty useless. What could be happening?

推薦答案

Autolayout 對(duì)我們?cè)O(shè)計(jì)和開(kāi)發(fā)視圖 GUI 的方式進(jìn)行了巨大改變.主要區(qū)別之一是 autolayout 不會(huì)立即更改我們的視圖大小,而是僅在觸發(fā)時(shí),即在特定時(shí)間,但我們可以強(qiáng)制它立即重新計(jì)算我們的約束或標(biāo)記它們作為布局的需要".它的工作方式類似于 -setNeedDisplay.
對(duì)我來(lái)說(shuō)最大的挑戰(zhàn)是要理解并接受這一點(diǎn),我們不再需要使用自動(dòng)調(diào)整大小的蒙版,而框架在放置我們的視圖時(shí)已成為無(wú)用的屬性.我們不再需要考慮視圖位置,但我們應(yīng)該考慮我們希望如何在彼此相關(guān)的空間中看到它們.
當(dāng)我們想要混合舊的自動(dòng)調(diào)整大小蒙版和自動(dòng)布局時(shí),就會(huì)出現(xiàn)問(wèn)題.我們應(yīng)該盡快考慮自動(dòng)布局的實(shí)現(xiàn),并盡量避免在基于自動(dòng)布局的視圖層次結(jié)構(gòu)中混合舊方法.
擁有一個(gè)僅使用自動(dòng)調(diào)整大小掩碼的容器視圖是可以的,例如視圖控制器的主視圖,但如果我們不嘗試混合使用會(huì)更好.
我從未使用過(guò)故事板,但很可能它是正確的.使用自動(dòng)布局,您的視圖框架在自動(dòng)布局引擎開(kāi)始計(jì)算時(shí)設(shè)置.嘗試在視圖控制器的 - (void)viewDidLayoutSubviews 方法的 super 之后詢問(wèn)同樣的問(wèn)題.
當(dāng)自動(dòng)布局引擎完成計(jì)算視圖的幀時(shí)調(diào)用此方法.

Autolayout made a huge change in how we design and develop the GUI of our views. One of the main differences is that autolayout doesn't change our view sizes immediately, but only when is triggered, that means at a specific time, but we can force it to recalculate our constraints immediately or mark them as "in need" of layout. It works like -setNeedDisplay.
The big challenge for me was to understand and accept that, we do not need to use autoresizing masks anymore, and frame has become a useless property in placing our views. We do not need to think about view position anymore, but we should think how we want to see them in a space related to each other.
When we want to mix old autoresizing mask and autolayout is when problems arise. We should think about autolayout implementation really soon and try to avoid to mix the old approach in a view hierarchy based on autolayout.
Is fine to have a container view that uses only autoresizing masks, such as a main view of a view controller, but is better if we do not try to mix.
I never used storyboard, but most proably it is correct. Using Autolayout, frame of your views are set when the autolayout engine starts its calculation. Try to ask the same thing right after super of - (void)viewDidLayoutSubviews method of your view controller.
This method is called when the autolayout engine has finished to calculate your views' frames.

這篇關(guān)于viewWillAppear: 和 viewDidAppear: 之間的視圖框架變化的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來(lái)源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問(wèn)題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

How to subclass UIScrollView and make the delegate property private(如何繼承 UIScrollView 并使委托屬性私有)
Swift - how to get last taken 3 photos from photo library?(Swift - 如何從照片庫(kù)中獲取最后拍攝的 3 張照片?)
Setting contentOffset programmatically triggers scrollViewDidScroll(以編程方式設(shè)置 contentOffset 觸發(fā) scrollViewDidScroll)
Photos app-like gap between pages in UIScrollView with pagingEnabled(使用 pagingEnabled 的 UIScrollView 中頁(yè)面之間的照片應(yīng)用程序式間隙)
why UIScrollView is leaving space from top in ios 6 and ios 7(為什么 UIScrollView 在 ios 6 和 ios 7 中從頂部留下空間)
UIScrollView pauses NSTimer while scrolling(UIScrollView 在滾動(dòng)時(shí)暫停 NSTimer)
主站蜘蛛池模板: 聚丙烯酰胺PAM-聚合氯化铝PAC-絮凝剂-河南博旭环保科技有限公司 巨野电机维修-水泵维修-巨野县飞宇机电维修有限公司 | 背压阀|减压器|不锈钢减压器|减压阀|卫生级背压阀|单向阀|背压阀厂家-上海沃原自控阀门有限公司 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 无菌检查集菌仪,微生物限度仪器-苏州长留仪器百科 | 高清视频编码器,4K音视频编解码器,直播编码器,流媒体服务器,深圳海威视讯技术有限公司 | cnc精密加工_数控机械加工_非标平键定制生产厂家_扬州沃佳机械有限公司 | 安徽华耐泵阀有限公司-官方网站 安德建奇火花机-阿奇夏米尔慢走丝|高维|发那科-北京杰森柏汇 | 温控器生产厂家-提供温度开关/热保护器定制与批发-惠州市华恺威电子科技有限公司 | 圣才学习网-考研考证学习平台,提供万种考研考证电子书、题库、视频课程等考试资料 | 苏州西装定制-西服定制厂家-职业装定制厂家-尺品服饰西装定做公司 | 太阳能发电系统-太阳能逆变器,控制器-河北沐天太阳能科技首页 | PVC地板|PVC塑胶地板|PVC地板厂家|地板胶|防静电地板-无锡腾方装饰材料有限公司-咨询热线:4008-798-128 | 广西正涛环保工程有限公司【官网】| 变位机,焊接变位机,焊接变位器,小型变位机,小型焊接变位机-济南上弘机电设备有限公司 | 蔬菜清洗机_环速洗菜机_异物去除清洗机_蔬菜清洗机_商用洗菜机 - 环速科技有限公司 | 活动策划,舞台搭建,活动策划公司-首选美湖上海活动策划公司 | 亚洲工业智能制造领域专业门户网站 - 亚洲自动化与机器人网 | 至顶网 | 上海平衡机-单面卧式动平衡机-万向节动平衡机-圈带动平衡机厂家-上海申岢动平衡机制造有限公司 | 合肥卓创建筑装饰,专业办公室装饰、商业空间装修与设计。 | 杭州月嫂技术培训服务公司-催乳师培训中心报名费用-产后康复师培训机构-杭州优贝姆健康管理有限公司 | 英思科GTD-3000EX(美国英思科气体检测仪MX4MX6)百科-北京嘉华众信科技有限公司 | 超声波分散机-均质机-萃取仪-超声波涂料分散设备-杭州精浩 | 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 | 除尘器布袋骨架,除尘器滤袋,除尘器骨架,电磁脉冲阀膜片,卸灰阀,螺旋输送机-泊头市天润环保机械设备有限公司 | 提升海外网站流量,增加国外网站访客UV,定制海外IP-访客王 | 轴流风机-鼓风机-离心风机-散热风扇-罩极电机,生产厂家-首肯电子 | 北京租车公司_汽车/客车/班车/大巴车租赁_商务会议/展会用车/旅游大巴出租_北京桐顺创业租车公司 | 信阳网站建设专家-信阳时代网联-【信阳网站建设百度推广优质服务提供商】信阳网站建设|信阳网络公司|信阳网络营销推广 | 【中联邦】增稠剂_增稠粉_水性增稠剂_涂料增稠剂_工业增稠剂生产厂家 | 保温杯,儿童婴童奶瓶,运动水壶「广告礼品杯定制厂家」超朗保温杯壶 | 联系我们-腾龙公司上分客服微信19116098882| 河南包装袋厂家_河南真空袋批发价格_河南服装袋定制-恒源达包装制品 | 展厅设计公司,展厅公司,展厅设计,展厅施工,展厅装修,企业展厅,展馆设计公司-深圳广州展厅设计公司 | 美侍宠物-专注宠物狗及宠物猫训练|喂养|医疗|繁育|品种|价格 | 上海物流公司,上海货运公司,上海物流专线-优骐物流公司 | 杭州荣奥家具有限公司-浙江办公家具,杭州办公家具厂 | 脉冲布袋除尘器_除尘布袋-泊头市净化除尘设备生产厂家 | 布袋除尘器|除尘器设备|除尘布袋|除尘设备_诺和环保设备 | 英思科GTD-3000EX(美国英思科气体检测仪MX4MX6)百科-北京嘉华众信科技有限公司 | PC阳光板-PC耐力板-阳光板雨棚-耐力板雨棚,厂家定制[优尼科板材] | 冷库安装厂家_杭州冷库_保鲜库建设-浙江克冷制冷设备有限公司 |