2014-12-02 2 views
4

Как создать uiview, который выглядит так, а также его subview получить тот же эффект. После поиска в Интернете я нашел, что это может сделать CALayer, но у меня недостаточно знаний об этом. Пожалуйста, помогите мне. Заранее спасибо.Как я могу создать кривую UIView/UIImageView не с анимацией?

How

+1

Я не думаю, что вы можете использовать Quartz или UIKit. Конечно, вы можете построить изогнутый путь, используя путь безье, но они применимы только к тому, что он рисовал, а не к subviews или подуровню. Используя кварц и CATransform3D, вы можете достичь своего рода трехмерных перспективных видов.
Что вы хотите сделать, это долг OpenGL. – Andrea

+0

без открытого gl это не возможно? – BHASKAR

+0

В чем проблема с использованием изображения с некоторой прозрачностью? –

ответ

0

Upto моих уровней и моего понимания я сделал некоторые кодирования, которые могут полезно для вас .. Если нет, пожалуйста, игнорировать его ..

первый Создать настраиваемое представление из нового файла

Далее нам нужно изменить класс свойства ViewController's view из UIView на наш класс CustomView. Откройте MainStoryboard.storyboard и в наброске документа нажмите на значок «Вид». Затем откройте инспектор идентификации (опция + команда + 3) и измените имя класса на CustomView.

затем добавить этот код в пользовательском View

- (void)drawRect:(CGRect)rect 
{ 
    // Drawing code 
    UIImage *imageRecipe =[UIImage imageNamed:@"statement_card_1.png"]; 
    UIImageView *imgView = [[UIImageView alloc]initWithFrame:CGRectMake(0 ,0 ,290, 200)]; 
    imgView.image = imageRecipe; 
    [self addSubview:imgView]; 

    CGPoint secondPoint = CGPointZero; 
    CGPoint point1 = CGPointZero; 
    CGPoint initial = CGPointZero; 

    UIBezierPath *aPath = [UIBezierPath bezierPath]; 

    initial = CGPointMake(30, 60); 
    [aPath moveToPoint:initial]; 

    CGPoint point = CGPointMake(290, 60); 
    CGPoint centerPoint = CGPointMake(point.x/2, -10); 

    [aPath addQuadCurveToPoint:point controlPoint:centerPoint]; 


    secondPoint = CGPathGetCurrentPoint(aPath.CGPath); 

    [aPath addLineToPoint:CGPointMake(secondPoint.x, 200.0)]; 

    point1 = CGPathGetCurrentPoint(aPath.CGPath); 

    CGPoint p = CGPointMake(initial.x,point1.y); 
    CGPoint cp = CGPointMake(point1.x/2 ,point1.y/2 + 30); 

    [aPath addQuadCurveToPoint:p controlPoint:cp]; 

[aPath addLineToPoint:CGPointMake(initial.x, secondPoint.y)]; 
[aPath closePath]; 

[aPath stroke]; 

CAShapeLayer *maskLayer = [CAShapeLayer layer]; 
maskLayer.frame = imgView.bounds; 
maskLayer.path = aPath.CGPath; 
imgView.layer.mask = maskLayer; 
} 
+0

Нет, его не работает, просто нарисуйте кривую на изображении. и замаскировать его. Thnx для ответа – BHASKAR

0

не будет происходить без OpenGL или какого-либо другого двигателя. вы не можете таким образом преобразовать CALayer. Основная идея слоя заключается в том, что это плоскость.

Возможно, это подделка с изображением и некоторыми повернутыми видами или что-то еще?

Смежные вопросы