0

例如,如果我们要在主视图上绘制一个 100 x 100 像素的圆圈,覆盖 iPad 上的整个屏幕,则不要使用initWithFrame以下 2 个步骤viewDidLoad

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

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

4

2 回答 2

1

这是一个很好的方法:)

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

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

- (id)initWithCenter:(CGPoint)point size:(CGSize)size {
    CGRect frame = CGRectMake(point.x-size.width/2,
                              point.y-size.height/2, 
                              size.width,
                              size.height);
    return [self initWithFrame:frame];
}
于 2012-09-06T09:04:42.450 回答
1

我通常这样做:

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

它看起来漂亮而清晰。

于 2012-09-06T09:10:06.680 回答