我想对NSView子类进行几个简单的转换,以使其在X轴,Y轴或两者上翻转。我是一位经验丰富的iOS开发人员,但我不知道如何在macOS中执行此操作。我创建了具有所需平移和缩放比例的NSAffineTransform,但无法确定如何将其实际应用于NSView。我可以找到的唯一可以接受任何形式的转换的属性是<div class="container">
<div id="item2">2</div>
<div id="item1">1</div>
</div>
<button onclick="change()">change</button>
,但这需要CATransform3D。
我唯一获得的成功是使用变换来翻转图像(如果是NSImageView),方法是在新的空白[[NSView layer] transform]
上调用lockFocus
,创建变换,然后在内部绘制未翻转的图像锁定的图像。但是,这远远不能令人满意,因为它不处理任何子视图,并且可能比直接将转换应用于NSImage
/ NSView
更为昂贵。
答案 0 :(得分:1)
这是解决方案:
- (void)setXScaleFactor:(CGFloat)xScaleFactor {
_xScaleFactor = xScaleFactor;
[self setNeedsDisplay];
}
- (void)setYScaleFactor:(CGFloat)yScaleFactor {
_yScaleFactor = yScaleFactor;
[self setNeedsDisplay];
}
- (void)drawRect:(NSRect)dirtyRect {
NSAffineTransform *transform = [[NSAffineTransform alloc] init];
[transform scaleXBy:self.xScaleFactor yBy:self.yScaleFactor];
[transform set];
[super drawRect:dirtyRect];
}
感谢您L'L'升有关使用获取到NSGraphicsContext提示。