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坐标系越界的主要内容,如果未能解决你的问题,请参考以下文章