1

SKCropNode通过从其受影响的节点中删除其源图像未覆盖的所有事物来工作。这是一种掩蔽,另一种是反转此逻辑,并显示源图像未覆盖的所有内容。

SKCropNode有一个布尔开关来设置此状态,称为invertMask,足够明智。

令人讨厌的是,它似乎是私有的。

如果抛开所有应用商店的审批流程、私有 API 的危险等,并接受测试是有趣的事情……而这只是为了测试……

如何invertMask使用 Swift 将其设置为 true?

更新:

切线相似的问题还有其他答案:

如何在 Swift 中访问 iOS 私有 API?

然而,这对我没有帮助,也不是直接回答如何在 Swift 中设置一个布尔值,这个特定的,在这个特定的问题中。

我在这里问了一个关于选择器的问题,并接受了一个答案,表明我不需要使用或理解选择器来实现这个目标:什么是 SKAction 中的选择器:perform(_:onTarget:)

但看起来可能需要了解使用 Selector 所需的确切语法才能在 Swift 中设置此布尔值。我也不知道那是什么,也不知道该怎么做。

但是任何其他设置这个布尔值的方法(在 Swift 中)当然没问题。

4

1 回答 1

2

根据最新的 Xcode 8.1(使用 Apple Swift 版本3.0.1构建8B62)官方 SKCropNode.h 标头如下:

/**
 @header


 Node that can crop its children's contents with a mask


 @copyright 2011 Apple, Inc. All rights reserved.

 */

#import <SpriteKit/SKNode.h>
#import <SpriteKit/SpriteKitBase.h>

NS_ASSUME_NONNULL_BEGIN

/**
 A SpriteKit node that masks child nodes using another node's alpha component
 */
SK_EXPORT @interface SKCropNode : SKNode

/**
 SKNode to be used as the mask.

 The SKNode supplied as the mask must not be a child of another node, but it may have children. Anywhere the mask's output alpha component is less than 0.05 masks out that area for the SKCropNode's children. If the mask is nil, nothing is masked out.
 */
@property (nonatomic, retain, nullable) SKNode *maskNode;

@end

NS_ASSUME_NONNULL_END

如您所见,没有存在 about invertMask,很抱歉,但我认为这是不可能的。

于 2016-11-05T11:09:28.857 回答