iOS坐标系越界

Posted

技术标签:

【中文标题】iOS坐标系越界【英文标题】:iOS coordinate system is out of bounds 【发布时间】:2012-09-01 17:39:04 【问题描述】:

我正在为 iPhone 开发我的第一款游戏,但遇到了这个问题。坐标系似乎很遥远,很可能我做错了什么。

我有一个 UIViewController,它被设置为 RootViewController。之后 viewController 会调用 UIView;

应用委托;

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
MyViewController *myViewController = [[MyViewController alloc] init];
[[self window] setRootViewController:myViewController];

视图控制器;

CGRect frame = [[UIScreen mainScreen] bounds];
MyView *v = [[MyView alloc] initWithFrame:frame];
[self setView:v];

查看;

- (id)initWithFrame:(CGRect)frame

    self = [super initWithFrame:frame];
.
.
.
[myCALayer setBounds:CGRectMake(0.0, 0.0, width, height)];
[myCALayer setPosition:CGPointMake(x, y)];

所以 0.0 应该是左上角,但在我的开发环境中,它在可见屏幕之外,仍然在左上角,但是当我在 0.0 处绘制图像时,我只能看到右边的一小部分它的底部。

知道为什么会这样吗?

【问题讨论】:

什么是宽度、高度、x 和 y?你在哪里定义这些? width: 48, height: 70, x: 2, y: 10。我在 View 中定义了这些。 【参考方案1】:

位置

指定接收者在超层坐标系中的位置。动画。

@property CGPoint position

讨论

位置是相对于锚点的。此属性的值以磅为单位指定。默认值为 (0.0, 0.0)。

有关bounds、anchorPoint 和position 属性之间关系的更多信息,请参阅Core Animation Programming Guide 中的“Layer Geometry and Transforms”。

默认锚点设置为 (0.5,0.5),它是图层的中心,因此如果您将位置设置为 (0,0),图层的中心将位于 (0,0) - 仅右下角将可见,您需要将 anchorPoint 设置为 (0,0),然后将位置设置为 (0,0)。

【讨论】:

谢谢! “Layer Geometry and Transforms”链接为我指明了正确的方向,并且 CALayer 的 anchorPoint 是解决我的问题的正确猜测。我的观点显然没有问题。 myCALayer.anchorPoint = CGPointMake(0, 0);彻底解决了这个问题。

以上是关于iOS坐标系越界的主要内容,如果未能解决你的问题,请参考以下文章

poj 3669 bfs(这道题隐藏着一个大坑)

ios 绘图,绘制坐标系,画坐标系

iOS开发必会的坐标系探究

IOS中坐标转换

iOS 百度坐标、GPS坐标、 高德坐标相互转换

[转]iOS地球坐标、火星坐标和百度坐标之间转换(Swift3.0)