Как я использую CATransform3D на UIView для добавления определенного типа перспективы?

Я создавал приложения для iPhone некоторое время теперь, с помощью основных преобразований (вращения, масштаб, и т.д.), но теперь я хотел бы сделать что-то немного более сложное.

Математика действительно не является моей самой сильной точкой..., но я задавался вопросом, как я мог бы перейти о добавляющей 'перспективе' к UIView (см. изображение ниже). Я быстро дразнил снимок экрана с помощью скошенных опций в Photoshop.

Я взглянул вокруг stackoverflow для решений этого, я нашел, Как я подаю заявку, перспектива преобразовывают к UIView? который работает превосходно - но это не действительно, что я после, потому что высота левых большая часть края больше, чем право большая часть края.

Кто-либо знает, как я мог бы пойти о выполнении этого CATransform3D, но без этих отличающихся высот?

сопроводительный текст http://img594.imageshack.us/img594/4354/perspectivel.png

6
задан Community 23 May 2017 в 12:33
поделиться

1 ответ

Если вы просто хотите наклонить, вам не нужно 3D-преобразование. Достаточно аффинного преобразования.

-(void)drawRect:(CGRect)rect {
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGAffineTransform transform = CGAffineTransformIdentity;
    transform.b = -0.1;
    transform.a = 0.9;
    CGContextConcatCTM(ctx,transform);
    // do drawing on the context
}

это модифицированное копирование и вставка из проекта с аналогичным преобразованием, но вам может потребоваться настроить параметры a и b. Это даст увеличение 1 из 9 слева направо ( 0,1 / 0,9 ), а уплотнение слева направо до 90% ( 0,9 ).

11
ответ дан 9 December 2019 в 22:28
поделиться