gpt4 book ai didi

objective-c - 需要 ios 开发人员的 CGRect 和 CGPoint 帮助

转载 作者:行者123 更新时间:2023-11-29 05:07:12 24 4
gpt4 key购买 nike

嘿,我正在尝试实现双击缩放,并且正在尝试使用 Apple ScrollViewSuite example 中的代码其中几行给了我错误。

第一个是

tapLocation = midpointBetweenPoints(tapLocation, [touch locationInView:touch.view]);

它说赋值中的类型不兼容。除了比较两个 CGPoint 之外,我无法找到有关 midpointBetweenPoints 的太多信息,我相信这就是我要传递的内容。

给出错误的第二部分是

    CGRect zoomRect = [self zoomRectForScale:newScale withCenter:tapPoint];

它给了我无效的初始化程序。

有人知道我做错了什么吗?

最佳答案

midpointBetweenPoints和zoomRectForScale:withCenter:都是示例代码的一部分,而不是iOS本身的一部分。

midpointBetweenPoints 返回一个 CGPoint(与赋值错误相关),但未在 header 中的任何位置声明。您将看到,在使用它的示例 3_Tiling 中,它在 TapDetectingView.m 的第 176 行定义,在第 54 行声明并在第 118 和 139 行使用。我的猜测是,您要么不包括项目中的代码,或者包含定义但省略声明。 Objective-C 是 C 的超集,因此遵循 C 规则。在 C 中,任何无法找到其声明的函数都假定返回“int”。您很可能需要添加声明:

CGPoint midpointBetweenPoints(CGPoint a, CGPoint b);

在您使用之前的某个地方。

据猜测,您对 ZoomRectForScale:withCenter: 的使用可能会遇到类似的问题。如果未找到 Objective-C 方法的声明,则假定它们返回“id”,它是指向通用 Objective-C 对象的指针。 CGRect 是一个 C 结构体,因此将指针强制转换为它是没有意义的。假设您已包含 RootViewController.m 的第 401 行到 416 行的代码,您还需要确保该声明对调用代码可见。在示例代码中,这是通过第 80 行声明实现的:

@interface RootViewController (UtilityMethods)
- (CGRect)zoomRectForScale:(float)scale withCenter:(CGPoint)center;
@end

在源文件中声明类似的添加内容是一种近似 Objective-C 中私有(private)方法的方法。如果您希望它是公开的,您只需将其添加到适当的接口(interface)声明中即可。

关于objective-c - 需要 ios 开发人员的 CGRect 和 CGPoint 帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4410377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com