2016-03-05 3 views
0

Я экспериментирую с PaintCode. В качестве примера я импортировал абстрактный файл чертежа Illustrator, в результате которого был получен код Swier ниже.Вставка кода PaintCode в UIImageView в Swift

На моей раскадровке у меня есть UIImageView с именем exampleImageView, что я хочу отобразить код PaintCode и иметь возможность масштабировать результирующее изображение, как векторный рисунок разных размеров, например. 1x, 2,5x5x и т. Д. (Т. Е. Гладкие непиксельные линии и кривые).

Вопросы:

1 - Как отобразить приведенный ниже код в виде изображения в UIImageView имени exampleImageView в Xcode?

2 - Как отобразить приведенный ниже код в UIView с именем exampleView в Xcode?

3 - Возможно ли масштабирование вверх или вниз по нижнему коду (например, как векторная графика), и если да, то как в Xcode?

Ожидаемое изображение:

enter image description here

PaintCode код:

//// General Declarations 
let context = UIGraphicsGetCurrentContext() 

//// Color Declarations 
let fillColor = UIColor(red: 0.087, green: 0.086, blue: 0.083, alpha: 1.000) 

//// Group 2 
CGContextSaveGState(context) 
CGContextSetAlpha(context, 0.75) 
CGContextBeginTransparencyLayer(context, nil) 


//// Bezier Drawing 
let bezierPath = UIBezierPath() 
bezierPath.moveToPoint(CGPointMake(26.08, 23.65)) 
bezierPath.addCurveToPoint(CGPointMake(61.71, 12.5), controlPoint1: CGPointMake(38.43, 23.65), controlPoint2: CGPointMake(54.42, 18.61)) 
bezierPath.addCurveToPoint(CGPointMake(52.65, 1.35), controlPoint1: CGPointMake(69, 6.38), controlPoint2: CGPointMake(64.99, 1.35)) 
bezierPath.addCurveToPoint(CGPointMake(16.91, 12.5), controlPoint1: CGPointMake(40.2, 1.35), controlPoint2: CGPointMake(24.2, 6.38)) 
bezierPath.addCurveToPoint(CGPointMake(26.08, 23.65), controlPoint1: CGPointMake(9.63, 18.61), controlPoint2: CGPointMake(13.63, 23.65)) 
bezierPath.closePath() 
bezierPath.moveToPoint(CGPointMake(48.14, 25)) 
bezierPath.addLineToPoint(CGPointMake(0.79, 25)) 
bezierPath.addCurveToPoint(CGPointMake(0.24, 24.35), controlPoint1: CGPointMake(-0.02, 25), controlPoint2: CGPointMake(-0.21, 24.73)) 
bezierPath.addCurveToPoint(CGPointMake(2.41, 23.65), controlPoint1: CGPointMake(0.76, 23.92), controlPoint2: CGPointMake(1.59, 23.65)) 
bezierPath.moveToPoint(CGPointMake(14.36, 12.5)) 
bezierPath.addCurveToPoint(CGPointMake(54.26, 0), controlPoint1: CGPointMake(22.62, 5.57), controlPoint2: CGPointMake(40.59, 0)) 
bezierPath.addCurveToPoint(CGPointMake(64.36, 12.5), controlPoint1: CGPointMake(67.93, 0), controlPoint2: CGPointMake(72.62, 5.57)) 
bezierPath.addCurveToPoint(CGPointMake(37.3, 23.65), controlPoint1: CGPointMake(58.56, 17.37), controlPoint2: CGPointMake(47.81, 21.59)) 
bezierPath.addLineToPoint(CGPointMake(49.75, 23.65)) 
fillColor.setFill() 
bezierPath.fill() 


CGContextEndTransparencyLayer(context) 
CGContextRestoreGState(context) 
+1

Вам нужно использовать 'UIImageView'? Этот код предназначен для использования в 'drawRect:' 'UIView', но вы всегда можете [создать контекст изображения] (https://developer.apple.com/library/ios/documentation/2DDrawing/Conceptual/DrawingPrintingiOS /HandlingImages/Images.html#//apple_ref/doc/uid/TP40010156-CH13-SW8), нарисуйте свою кривую, затем получите изображение и назначьте его 'UIImageView', если вы действительно этого хотите. – Hamish

+0

@ originaluser2 Не обязательно. Предпочитаете 'UIImageView', но возможно также UIView. Я обновил вопрос как для UIImageView, так и для UIView, чтобы узнать о различиях в способе реализации кода. – user4806509

ответ

0

1 - Как отобразить приведенный ниже код в виде изображения в UIImageView по имени exampleImageView?

Изображение может быть создано в PaintCode, но я не думаю, что оно здесь подходит. Для начала создайте метод в PaintCode.

2 - Возможно ли масштабирование вверх или вниз по нижнему коду (например, как векторная графика), и если да, то как?

В PaintCode вы можете сделать вещи изменяемыми по размеру с помощью фреймов.

Посмотрите на Dynamic Shapes tutorial, который обращается к обоим.

+0

Извините, я имел в виду, как этот код можно поместить в Xcode в UIImageView или UIView и изменить размер в Xcode. – user4806509

+0

Код является лишь частью того, что генерирует PaintCode. Вы хотите использовать сгенерированный метод рисования (или сгенерированный код изображения) - это сэкономит ваше время. Создайте метод рисования и экспортируйте код из PaintCode в свой проект, чтобы увидеть, что я имею в виду. Указанный выше код не является динамическим. Он жестко закодирован. В уроке, который я привел, показано, как сделать его динамичным. Существуют и другие способы, которые могут лучше соответствовать вашей цели и другим учебникам на их веб-странице. – MirekE