我有MacOS应用程序,当我设置frame的origin.y时,我的视图从底部启动。在iOS应用中,origin.y将从顶部开始。我怎样才能改变它。
我在ViewDidLoad和ViewWillAppear中尝试了下面的代码(Suggested by Mark),但是没有成功。
self.view.layer?.sublayerTransform = CATransform3DMakeScale(1.0, -1.0, 1.0)发布于 2020-11-06 17:06:45
坐标系在MacOS和iOS中具有不同的绘图方向:https://developer.apple.com/library/archive/documentation/General/Devpedia-CocoaApp-MOSX/CoordinateSystem.html
在使用CATransform3DMakeScale通过y坐标“翻转”系统之后,必须使用CATransform3DMakeTranslation将其“转换回来”。
Smth喜欢:
CATransform3D t = CATransform3DMakeScale(1.0, -1.0, 1.0);
t = CATransform3DTranslate(0,layerHeight, 0); // or -layerHeight, you should test
self.view.layer?.sublayerTransform = t;发布于 2020-11-06 17:34:03
查看CALayer的isGeometryFlipped属性,该属性控制y = 0位于屏幕的顶部还是底部。
发布于 2020-11-11 20:33:21
实现方法-(BOOL)isFlipped以覆盖macOS NSView类中的本机坐标系。
- (BOOL)isFlipped {
return YES;
}这应该围绕特定视图中的所有坐标进行翻转。
根据NSView/ to视图,CALayer的行为将有所不同。
但也有一种方法可以翻转单个CALayer。您的CALayer应该有一个可以设置的属性(BOOL)geometryFlipped。
CALayer *yourlayer = [CALayer layer];
yourlayer.geometryFlipped = YES;或者创建CALayer的子类并实现
-(BOOL)contentsAreFlipped {
return YES;
}用"Flipp“表示的是y坐标。X坐标应该保持不变。
https://stackoverflow.com/questions/64711484
复制相似问题