在iOS上,如果我们真的想使用CenterAndSize初始化,那么设置子视图的最佳方法是什么?

在iOS上,如果我们真的想使用CenterAndSize初始化,那么设置子视图的最佳方法是什么?,ios,objective-c,uiview,Ios,Objective C,Uiview,例如,如果我们要在主视图上画一个100 x 100像素的圆圈,它覆盖了iPad上的整个屏幕,那么就不要像下面的两个步骤那样使用initWithFrame: UINodeView *nodeView = [[UINodeView alloc] initWithFrame: CGRectMake(x, y, NSNodeWidth, NSNodeHeight)]; nodeView.center = CGPointMake(x, y);

例如,如果我们要在主视图上画一个100 x 100像素的圆圈,它覆盖了iPad上的整个屏幕,那么就不要像下面的两个步骤那样使用
initWithFrame

UINodeView *nodeView = [[UINodeView alloc] initWithFrame:
                               CGRectMake(x, y, NSNodeWidth, NSNodeHeight)];
nodeView.center = CGPointMake(x, y);

因为
x
y
self.view.bounds.size.width/2
更优雅地使圆水平居中,而不是
self.view.bounds.size.width/2-NSNodeWidth/2
。是先按帧进行
init
,然后再重置中心的好方法,还是有更好的方法,如果有
initWithCenterAndSize

这是一种很好的方法:)

我会先生成定位帧以避免额外的方法调用,但这只是个人偏好的问题:)

如果您在应用程序中大量使用此功能,您可以在UIView上创建一个实现此功能的类别(警告,未测试代码:)

我通常这样做:

UINodeView *nodeView = [[UINodeView alloc] initWithFrame:
                           CGRectMake(0, 0, NSNodeWidth, NSNodeHeight)];
nodeView.center = CGPointMake(x, y);

它看起来又漂亮又清晰。

你的意思是,第一次对x和y使用
0
,因为它们无论如何都会被更改…?看起来不错。。。左上角的坐标+大小以一对一的方式映射到中心+大小,对吗?中心是相对于父对象的,就像左上角的坐标一样,中心与节点视图的边界(原点或大小)完全无关。。。另外,如果iOS也内置了这种方法,或许也有意义,因为它只是一种替代方法
UINodeView *nodeView = [[UINodeView alloc] initWithFrame:
                           CGRectMake(0, 0, NSNodeWidth, NSNodeHeight)];
nodeView.center = CGPointMake(x, y);