- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的目的是比较 CGPoints
或 CGPoint
值(因为该应用程序也适用于 Mac OS NSPoints
或 NSPoint
值)的几个移动对象来检测对象是否具有相同的位置。
我的第一个解决方案是快速枚举这些对象的数组并将所有 CGPoints
存储到一个数组,然后再次快速枚举对象数组以检查位置是否相同其他对象:
// STEP 1: Collect all Positions
NSMutableArray *allPositions = [NSMutableArray arrayWithCapacity:self.allObjects.count];
for (Object *myObject in self.allObjects) {
CGPoint myObjectPosition = ...;
[allPositions addObject:myObjectPosition]; // Problem here
}
// STEP 2: Check for Overlapping
for (Object *myObject in self.allObjects) {
CGPoint myObjectPosition = ...;
if ([allPositions containsObject:myObjectPosition] {
// Overlapping
}
}
问题是将点添加到 allPositions
数组。因此可以使用 NSValue
:
[NSValue valueWithCGPoint:point];
但这只在 iOS 下有效,对于 Mac OS 必须使用 valueWithPoint
和 NSPoint
。
我可以保存或保存字典中的 x
和 y
值并将它们存储到 allPositions
数组吗?或者有没有 2x 快速枚举的更好解决方案? self.allObjects
中大约有100个对象...
最佳答案
CGPoint 和 NSPoint 是相同的结构。如果他们有不同的名字并不重要,他们都持有两个CGFloat。它们具有相同的尺寸和相同的对齐方式,因此可以互换使用。所以在您的情况下 valueWithPoint: 适合。
编辑
关于你问的第二件事,这应该用宏来完成:
#if TARGET_OS_IPHONE
value= [NSValue valueWithCGPoint: point];
#else
value= [NSValue valueWithPoint: point];
#endif
回到正题:
#if TARGET_OS_IPHONE
point= value.CGPointValue;
#else
point= value.pointValue;
#endif
http://sealiesoftware.com/blog/archive/2010/8/16/TargetConditionalsh.html
关于iOS/Mac 操作系统 : Saving and comparing CGPoints/NSPoints in Arrays,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17168052/
我有 4 个 NSPoints,它们是矩形的 4 个角 现在我有了另一个 NSPoint,这是鼠标下降的位置 (mousedown_nsp)。 找到与 mousedown_nsp 相关的最近的 NSP
在 macOS 编程中,我们知道 Quartz 使用原点 (0, 0) 位于主显示屏左上角的坐标空间。增加 y 会下降。 Cocoa 使用一个坐标空间,其中原点 (0, 0) 位于主显示屏的左下角,并
我将两个 CGPoints(在一个数组中)保存到 Documents 目录中的一个文本文件中。当我阅读文件时,这是我得到的: NSPoint: {66.5, 87}, NSPoint: {198.5,
让我从代码开始。 - (NSPoint*) pointFromPoint:(NSPoint*)point withDistance:(float)distance towardAngle:(float
我正在 cocoa 应用程序中实现拖放,并且使用 NSDraggingSource 协议(protocol)中的以下方法: - (void)draggedImage:(NSImage *)dragge
如何让 NSPoint 中的整数值显示为整数而不是小数? let temp:NSPoint = NSMakePoint(5,7) print(temp.x) . // displays 5.0 我只想
我正在覆盖 draggingUpdated:在WebView子类。这样我就能得到 NSPoint当前拖动目的地是[(id)sender draggingLocation] 我想得到这个 NSPoint
NSPoint 是 Cocoa 中用来表示平面上的点的 C 结构体。 如何以 Objective-C 风格对 NSPoint 进行平移、旋转和其他几何操作? 到目前为止,我正在使用 C 函数来进行这些
Apple 基础套件中是否提供了适当的结构来表示离散坐标系?我知道我可以只使用 NSPoint 的整体组件,并按照惯例保持它的离散性,甚至可以定义我自己的组件。 但是,如果已经有一个输入正确,我会更喜
关闭。这个问题是not reproducible or was caused by typos 。目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我正在尝试通过 NotificationCenter 传递 NSPoint。我已经使用定义的三种方法构建了一个 NSView 子类: override func mouseDragged(wi
我在 NSPoint 中得到一个点: NSPoint: {273,534} 我想将 273 和 534 传递给 CGrectMake。 例如: viewTwo.frame=CGRectMake(273
CGPoint、CGSize、CGRect的单位是什么; NSSize、NSPoint 和 NSRect? 最佳答案 CGPoint等的单位是点。一个点在非视网膜屏幕上代表一个像素,在视网膜屏幕上代表
所以我试图获取与 NSTextView 中特定字符的位置相对应的 NSPoint 或 NSRect。这就是我到目前为止所拥有的(效果不是很好,结果似乎有点不可预测。 NSRange theTextRa
我创建了一个包含 NSRect 值的可变数组。我想检查我创建的 NSPoint 是否在这个矩形内。在 cocoa 中做到这一点的最佳方法是什么。 最佳答案 来自Foundation Functions
我的应用程序有一个显示事件时间线的自定义 View 。该 View 包装在 NSScrollView 中以支持时间轴的水平滚动。使用通知,我实现了一种机制,该机制应该显示另一个自定义 View ,当用
我有一个 NSTextView 并且需要插入点的坐标以在用户交互时在那里显示 View 。 有一个函数可以从 NSPoint 中获取字符索引。我想知道是否有任何简单的方法可以做相反的事情? 感谢您的帮
本文以实例详细描述了Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect的定义及用法,具体如下所示: 1、NSRange: NSRang
我知道这里已经以几种形式提出了这个问题,但不幸的是,建议的解决方案都不适合我。 我正在实现多点触控 我的 osx 应用程序的功能。 我的问题: 我需要解析屏幕,由屏幕坐标中的 NSPoint 描述,到
因此,我将一个 View 传递给一个方法,并且我想从该 View 中包含的 CGRect 中查找某些值的属性。 - (void)blahblah:(someView*)view int origi
我是一名优秀的程序员,十分优秀!