2016-01-19 2 views
-1

У меня есть класс uiview, который вызывает собственный метод класса чертежа с линией в нем. Координаты чертежа чертежа рисуются для 433x439 uiview. Когда это приложение открывается на iPad Pro, автоопределение изменяет размер uiview (правильно). Но drawrect все еще обращается к старому размеру (433x439) и не масштабируется, чтобы заполнить новые границы uiview.drawrect, чтобы соответствовать uiview независимо от размера

enter image description here

Любая идея, как я могу получить эту работу? Я не хочу снова рисовать его в новых координатах. Похоже, режим содержимого или что-то должно перерисовать? Примечание. Я использую эти фигуры, чтобы сделать что-то еще. Масштабирование (?), Которое кто-то, надеюсь, помогает мне, не должно влиять на это, правильно?

+ (void)drawDemos 
{ 

    collectedppaths = [NSMutableArray new]; 

    //// Color Declarations 
    UIColor* color2 = [UIColor colorWithRed: 1 green: 0 blue: 0 alpha: 1]; 

    //// Group 
    { 
     //// demo 0 Drawing 
     UIBezierPath* demo0Path = [UIBezierPath bezierPath]; 
     [demo0Path moveToPoint: CGPointMake(35.5, 215.55)]; 
     [demo0Path addLineToPoint: CGPointMake(86.38, 215.55)]; 
     [demo0Path addLineToPoint: CGPointMake(86.38, 253.39)]; 
     [demo0Path addLineToPoint: CGPointMake(35.5, 254.32)]; 
     [demo0Path addLineToPoint: CGPointMake(35.5, 215.55)]; 
     [demo0Path closePath]; 
     [color2 setStroke]; 
     demo0Path.lineWidth = 5; 
     [demo0Path stroke]; 
     [collectedppaths addObject:demo0Path]; 


     //// demo 1 Drawing 
     UIBezierPath* demo1Path = [UIBezierPath bezierPath]; 
     [demo1Path moveToPoint: CGPointMake(35.5, 254.79)]; 
     [demo1Path addLineToPoint: CGPointMake(86.38, 254.79)]; 
     [demo1Path addLineToPoint: CGPointMake(86.38, 304.76)]; 
     [demo1Path addLineToPoint: CGPointMake(35.5, 303.36)]; 
     [demo1Path addLineToPoint: CGPointMake(35.5, 254.79)]; 
     [demo1Path closePath]; 
     [color2 setStroke]; 
     demo1Path.lineWidth = 5; 
     [demo1Path stroke]; 
     [collectedppaths addObject:demo1Path]; 


     //// demo 3 Drawing 
     UIBezierPath* demo3Path = [UIBezierPath bezierPath]; 
     [demo3Path moveToPoint: CGPointMake(86.38, 254.79)]; 
     [demo3Path addLineToPoint: CGPointMake(102.71, 256.19)]; 
     [demo3Path addLineToPoint: CGPointMake(122.78, 260.39)]; 
     [demo3Path addLineToPoint: CGPointMake(138.19, 266)]; 
     [demo3Path addLineToPoint: CGPointMake(155.46, 259.46)]; 
     [demo3Path addLineToPoint: CGPointMake(169.46, 250.12)]; 
     [demo3Path addLineToPoint: CGPointMake(177.86, 240.78)]; 
     [demo3Path addLineToPoint: CGPointMake(183.46, 239.37)]; 
     [demo3Path addLineToPoint: CGPointMake(182.53, 302.9)]; 
     [demo3Path addLineToPoint: CGPointMake(88.24, 303.83)]; 
     [demo3Path addLineToPoint: CGPointMake(86.38, 254.79)]; 
     [demo3Path closePath]; 
     [color2 setStroke]; 
     demo3Path.lineWidth = 5; 
     [demo3Path stroke]; 
     [collectedppaths addObject:demo3Path]; 


     //// demo 6 Drawing 
     UIBezierPath* demo6Path = [UIBezierPath bezierPath]; 
     [demo6Path moveToPoint: CGPointMake(183.93, 238.91)]; 
     [demo6Path addLineToPoint: CGPointMake(182.53, 308.5)]; 
     [demo6Path addLineToPoint: CGPointMake(279.61, 307.1)]; 
     [demo6Path addLineToPoint: CGPointMake(279.61, 254.79)]; 
     [demo6Path addLineToPoint: CGPointMake(208.2, 254.79)]; 
     [demo6Path addLineToPoint: CGPointMake(191.4, 241.24)]; 
     [demo6Path addLineToPoint: CGPointMake(183.93, 238.91)]; 
     [demo6Path closePath]; 
     [color2 setStroke]; 
     demo6Path.lineWidth = 5; 
     [demo6Path stroke]; 
     [collectedppaths addObject:demo6Path]; 


     //// demo 5 Drawing 
     UIBezierPath* demo5Path = [UIBezierPath bezierPath]; 
     [demo5Path moveToPoint: CGPointMake(182.99, 158.1)]; 
     [demo5Path addLineToPoint: CGPointMake(279.14, 206.68)]; 
     [demo5Path addLineToPoint: CGPointMake(279.61, 254.79)]; 
     [demo5Path addLineToPoint: CGPointMake(208.66, 254.79)]; 
     [demo5Path addCurveToPoint: CGPointMake(191.4, 241.24) controlPoint1: CGPointMake(208.66, 254.79) controlPoint2: CGPointMake(191.4, 241.71)]; 
     [demo5Path addCurveToPoint: CGPointMake(183.93, 238.91) controlPoint1: CGPointMake(191.4, 240.78) controlPoint2: CGPointMake(183.93, 238.91)]; 
     [demo5Path addLineToPoint: CGPointMake(182.99, 158.1)]; 
     [demo5Path closePath]; 
     [color2 setStroke]; 
     demo5Path.lineWidth = 5; 
     [demo5Path stroke]; 
     [collectedppaths addObject:demo5Path]; 


     //// demo 4 Drawing 
     UIBezierPath* demo4Path = [UIBezierPath bezierPath]; 
     [demo4Path moveToPoint: CGPointMake(218.47, 74.5)]; 
     [demo4Path addLineToPoint: CGPointMake(225.47, 82.91)]; 
     [demo4Path addLineToPoint: CGPointMake(232.94, 103.46)]; 
     [demo4Path addLineToPoint: CGPointMake(241.34, 119.34)]; 
     [demo4Path addLineToPoint: CGPointMake(260.01, 132.42)]; 
     [demo4Path addLineToPoint: CGPointMake(281.48, 139.42)]; 
     [demo4Path addLineToPoint: CGPointMake(279.14, 206.68)]; 
     [demo4Path addLineToPoint: CGPointMake(182.99, 158.1)]; 
     [demo4Path addLineToPoint: CGPointMake(182.99, 111.4)]; 
     [demo4Path addLineToPoint: CGPointMake(179.26, 97.39)]; 
     [demo4Path addLineToPoint: CGPointMake(218.47, 74.5)]; 
     [demo4Path closePath]; 
     [color2 setStroke]; 
     demo4Path.lineWidth = 5; 
     [demo4Path stroke]; 
     [collectedppaths addObject:demo4Path]; 


     //// demo 7 Drawing 
     UIBezierPath* demo7Path = [UIBezierPath bezierPath]; 
     [demo7Path moveToPoint: CGPointMake(281.95, 140.36)]; 
     [demo7Path addLineToPoint: CGPointMake(300.62, 143.16)]; 
     [demo7Path addLineToPoint: CGPointMake(319.75, 143.16)]; 
     [demo7Path addLineToPoint: CGPointMake(352.42, 165.58)]; 
     [demo7Path addLineToPoint: CGPointMake(359.43, 183.79)]; 
     [demo7Path addLineToPoint: CGPointMake(387.9, 196.4)]; 
     [demo7Path addLineToPoint: CGPointMake(397.7, 221.16)]; 
     [demo7Path addLineToPoint: CGPointMake(377.16, 228.63)]; 
     [demo7Path addLineToPoint: CGPointMake(297.35, 228.63)]; 
     [demo7Path addLineToPoint: CGPointMake(292.68, 225.83)]; 
     [demo7Path addLineToPoint: CGPointMake(289.88, 213.69)]; 
     [demo7Path addLineToPoint: CGPointMake(279.14, 206.68)]; 
     [demo7Path addLineToPoint: CGPointMake(281.95, 140.36)]; 
     [demo7Path closePath]; 
     [color2 setStroke]; 
     demo7Path.lineWidth = 5; 
     [demo7Path stroke]; 
     [collectedppaths addObject:demo7Path]; 


     //// demo 8 Drawing 
     UIBezierPath* demo8Path = [UIBezierPath bezierPath]; 
     [demo8Path moveToPoint: CGPointMake(279.61, 206.21)]; 
     [demo8Path addLineToPoint: CGPointMake(289.88, 213.69)]; 
     [demo8Path addLineToPoint: CGPointMake(292.68, 225.83)]; 
     [demo8Path addLineToPoint: CGPointMake(297.35, 228.63)]; 
     [demo8Path addLineToPoint: CGPointMake(376.7, 228.63)]; 
     [demo8Path addLineToPoint: CGPointMake(397.7, 221.16)]; 
     [demo8Path addLineToPoint: CGPointMake(400.5, 228.63)]; 
     [demo8Path addLineToPoint: CGPointMake(393.5, 253.85)]; 
     [demo8Path addLineToPoint: CGPointMake(279.61, 253.85)]; 
     [demo8Path addLineToPoint: CGPointMake(279.61, 206.21)]; 
     [demo8Path addLineToPoint: CGPointMake(279.61, 206.21)]; 
     [demo8Path closePath]; 
     [color2 setStroke]; 
     demo8Path.lineWidth = 5; 
     [demo8Path stroke]; 
     [collectedppaths addObject:demo8Path]; 


     //// demo 9 Drawing 
     UIBezierPath* demo9Path = [UIBezierPath bezierPath]; 
     [demo9Path moveToPoint: CGPointMake(280.08, 253.39)]; 
     [demo9Path addLineToPoint: CGPointMake(398.17, 253.39)]; 
     [demo9Path addLineToPoint: CGPointMake(394.9, 261.33)]; 
     [demo9Path addLineToPoint: CGPointMake(388.83, 266.93)]; 
     [demo9Path addCurveToPoint: CGPointMake(382.76, 270.67) controlPoint1: CGPointMake(388.83, 266.93) controlPoint2: CGPointMake(382.76, 270.2)]; 
     [demo9Path addCurveToPoint: CGPointMake(377.16, 276.74) controlPoint1: CGPointMake(382.76, 271.13) controlPoint2: CGPointMake(377.16, 276.74)]; 
     [demo9Path addLineToPoint: CGPointMake(374.83, 282.81)]; 
     [demo9Path addLineToPoint: CGPointMake(377.16, 308.5)]; 
     [demo9Path addLineToPoint: CGPointMake(280.08, 308.5)]; 
     [demo9Path addLineToPoint: CGPointMake(280.08, 253.39)]; 
     [demo9Path closePath]; 
     [color2 setStroke]; 
     demo9Path.lineWidth = 5; 
     [demo9Path stroke]; 
     [collectedppaths addObject:demo9Path]; 


     //// demo 2 Drawing 
     UIBezierPath* demo2Path = [UIBezierPath bezierPath]; 
     [demo2Path moveToPoint: CGPointMake(86.84, 215.55)]; 
     [demo2Path addLineToPoint: CGPointMake(183.93, 215.55)]; 
     [demo2Path addLineToPoint: CGPointMake(183.93, 238.91)]; 
     [demo2Path addLineToPoint: CGPointMake(177.86, 240.78)]; 
     [demo2Path addLineToPoint: CGPointMake(169.46, 250.12)]; 
     [demo2Path addLineToPoint: CGPointMake(155.46, 259.46)]; 
     [demo2Path addLineToPoint: CGPointMake(138.19, 266)]; 
     [demo2Path addLineToPoint: CGPointMake(122.78, 260.39)]; 
     [demo2Path addLineToPoint: CGPointMake(102.71, 256.19)]; 
     [demo2Path addLineToPoint: CGPointMake(86.84, 254.79)]; 
     [demo2Path addLineToPoint: CGPointMake(86.84, 215.55)]; 
     [demo2Path closePath]; 
     [color2 setStroke]; 
     demo2Path.lineWidth = 5; 
     [demo2Path stroke]; 
     [collectedppaths addObject:demo2Path]; 
    } 

} 

ответ

1

Вы жестко кодируете свои очки. Конечно, он будет рисовать в том же месте и в том же размере.

Вместо этого, определять точки, как пропорция всей точка зрения, и вычислить точную хну значения, основанную на rect, который передается в drawRect.

Теперь все, что вам нужно сделать, это наложить ваше мнение на нужное место и размер, и чертеж должен автоматически масштабироваться. Вы даже можете увеличить масштаб пользователя, и область должна просто правильно перерисоваться.

+0

Я в конечном итоге использовал функцию фреймворков, чтобы сделать именно это. – malaki1974

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