您好、欢迎来到现金彩票网!
当前位置:21点 > 自动布局 >

自动布局什么时候才能获取到frame大小 ios

发布时间:2019-07-01 06:49 来源:未知 编辑:admin

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  知道合伙人软件行家采纳数:5019获赞数:6869毕业于福建农林大学,本科学士学位。从事IT行业3年,曾参与过多个大型项目的需求调研、软件研发。向TA提问展开全部打开Xcode5,创建一个基于Single View Application模板的iPhone项目。叫做StrutsProblem:

  注意:任何你使用Xcode4.5或更高版本中,nib或者storyboard文件都默认激活了自动布局。因为自动布局是iOS6以及以上系统的一个新特性,如果你想使用最新的Xcode开发兼容iOS5的程序,你需要将这个选项去掉。

  为了表述更清楚,这里给出每个视图的颜色,这样你就能分清哪个是驴子哪个是马了。

  每个视图的inset到窗口的距离都是20点;视图之间的距离也是20点。底部的视图的宽是280点,上面两个视图的宽都是130点。所有的视图的高都是254。

  在iPhone Retina 4-inch simulator上运行这个程序,并且将模拟器旋转到landscape。程序看起来便变成这副鬼样,这不是我想象的那样:

  很明显,三个视图的autosizing masks留下了一些需要改进的地方。将左上方视图的autosizing设置改成这样:

  这将会让视图贴附左上边缘(不是右下边缘),并且当父视图大小改变时,重新调整自身水平和垂直方向的大小。

  已经很接近了,但又不完全一样。视图之间的padding不正确。换个说法就是视图的大小不完全正确。问题出在当父视图改变大小时,autosizing masks告诉子视图调整大小,但又没告诉子视图该调整多少(坑儿?)。

  你可以调戏autosizing masks-比如,改变灵活宽度和高度设置(springs)-你不会得到完全正确的三个间距20点的视图。

  为了解决这个springs和struts方法的布局问题,非常不幸,你需要额外写一些代码。

  在旋转用户界面之前、之间、之后,UIKit会发送一些消息到你的视图控制器,你可以截获这些消息,从而对你UI做出改变。代表性的像viewWillLayoutSubviews,你会重写这个方法从而改变任何需要重新排列的视图的frame。

  打开Xcode5,创建一个基于SingleViewApplication模板的iPhone项目。叫做StrutsProblem:点击Main.storyboard。在你做别的之前,首先将这个storyboard的自动布局关了。你需要在Fileinspector,第一个选项的第六个tabs里:将UseAutolayout的box勾选去掉。现在storyboard使用旧的struts-and-springs模型。注意:任何你使用Xcode4.5或更高版本中,nib或者storyboard文件都默认激活了自动布局。因为自动布局是iOS6以及以上系统的一个新特性,如果你想使用最新的Xcode开发兼容iOS5的程序,你需要将这个选项去掉。拖拽三个新的视图到主视图上,并且像这样排列起来:为了表述更清楚,这里给出每个视图的颜色,这样你就能分清哪个是驴子哪个是马了。每个视图的inset到窗口的距离都是20点;视图之间的距离也是20点。底部的视图的宽是280点,上面两个视图的宽都是130点。所有的视图的高都是254。在iPhoneRetina4-inchsimulator上运行这个程序,并且将模拟器旋转到landscape。程序看起来便变成这副鬼样,这不是我想象的那样:注意:你可以使用HardwareRotateLeft和RotateRight菜单选项旋转模拟器,或者通过按下键盘上的?键,同时按下←或→。而你想象的程序在landscape应该像这样:很明显,三个视图的autosizingmasks留下了一些需要改进的地方。将左上方视图的autosizing设置改成这样:这将会让视图贴附左上边缘(不是右下边缘),并且当父视图大小改变时,重新调整自身水平和垂直方向的大小。同样的,右上方视图的autosizing设置改成这样:底部视图:再次运行程序,并且旋转到landscape。现在看起来像这样:已经很接近了,但又不完全一样。视图之间的padding不正确。换个说法就是视图的大小不完全正确。问题出在当父视图改变大小时,autosizingmasks告诉子视图调整大小,但又没告诉子视图该调整多少(坑儿?)。你可以调戏autosizingmasks-比如,改变灵活宽度和高度设置(springs)-你不会得到完全正确的三个间距20点的视图。为了解决这个springs和struts方法的布局问题,非常不幸,你需要额外写一些代码。在旋转用户界面之前、之间、之后,UIKit会发送一些消息到你的视图控制器,你可以截获这些消息,从而对你UI做出改变。代表性的像viewWillLayoutSubviews,你会重写这个方法从而改变任何需要重新排列的视图的frame。在这之前,你需要先做出一个outlet属性来引用这个视图。

http://mervynsons.com/zidongbuju/189.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有