Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 创建自定义视图并初始化它时与框架的界限_Ios_Objective C_View_Frame_Bounds - Fatal编程技术网

Ios 创建自定义视图并初始化它时与框架的界限

Ios 创建自定义视图并初始化它时与框架的界限,ios,objective-c,view,frame,bounds,Ios,Objective C,View,Frame,Bounds,我在理解差异以及何时使用什么方面遇到了一些困难 我知道教科书的定义。关于这个话题,我也搜索了很多。这里的一些答案在某种程度上是有帮助的,但我觉得我仍然不能正确理解这一点 假设我有一个aCustomView.m,当我在该视图中放置UI元素时,我使用边界,这是有意义的,因为它在自己的坐标系中,但是,当我在视图控制器中使用initWithFrame:初始化视图时,我应该使用self.view.frame还是self.view.bounds?两者都会起作用,但结果不同 我真的很想了解这一点,所以如果有任

我在理解差异以及何时使用什么方面遇到了一些困难

我知道教科书的定义。关于这个话题,我也搜索了很多。这里的一些答案在某种程度上是有帮助的,但我觉得我仍然不能正确理解这一点

假设我有一个aCustomView.m,当我在该视图中放置UI元素时,我使用边界,这是有意义的,因为它在自己的坐标系中,但是,当我在视图控制器中使用
initWithFrame:
初始化视图时,我应该使用
self.view.frame
还是
self.view.bounds
?两者都会起作用,但结果不同


我真的很想了解这一点,所以如果有任何帮助,我将不胜感激。

UIView的边界是矩形,表示为相对于自身坐标系(0,0)的位置(x,y)和大小(宽度,高度)

UIView的框架是矩形,表示为相对于包含在其中的superview的位置(x,y)和大小(宽度,高度)


因此,差异只是一个表示问题。

只想补充一点,如果您使用self.view.frame,它通常会起作用,因为该帧的原点恰好为0,0。然而,作为一个很好的经验法则。如果您要添加子视图并希望它填充父视图,请始终将框架设置为其父视图的边界。感谢@Logan的附加注释。当您想要填充父视图时,通常使用父视图的边界来初始化子视图。