我想在两个单独的并排 UIView 方块上实现适当的透视“倾斜”。在下图中,红色和绿色方块是应用了相同变换的单独 UIView。从视觉上看,这个视角是不正确的(是吗?),或者至少黄色/蓝色方形 UIView 显示了优越的错觉。黄色-蓝色方块实际上是矩形父 UIView 的子视图,并且变换已应用于父视图。
这是代码:
@interface PEXViewController ()
@property (strong, nonatomic) IBOutlet UIView *redSquare;
@property (strong, nonatomic) IBOutlet UIView *greenSquare;
@property (strong, nonatomic) IBOutlet UIView *yellowSquareBlueSquare;
@end
@implementation PEXViewController
#define TILT_AMOUNT 0.65
-(void)tiltView:(UIView *)slave{
CATransform3D rotateX = CATransform3DIdentity;
rotateX.m34 = -1 / 500.0;
rotateX = CATransform3DRotate(rotateX, TILT_AMOUNT * M_PI_2, 1, 0, 0);
slave.layer.transform = rotateX;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self tiltView:self.greenSquare];
[self tiltView:self.redSquare];
[self tiltView:self.yellowSquareBlueSquare];
}
@end
1) 是否有一种简单的方法可以将转换应用于单独的红色/绿色 UIViews 并实现与“分组”黄色和蓝色 UIViews 相同的效果?我更喜欢将视图分开,因为这是一个通用应用程序,并且 UIView 在(例如)iPad 布局中不是并排的。
2)如果#1是不可能的,我猜最好的办法是简单地创建一个存在于iPhone中但不存在于iPad中的父视图。还有其他选择吗?