Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«iOS. ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 144

Автор Π’Π°Π½Π΄Π°Π΄ Нахавандипур

Рис. 17.6. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Π°Ρ строка, нарисованная Π² графичСском контСкстС Π²ΠΈΠ΄Π°


β€” (void)drawRect:(CGRect)rect{


UIFont *helveticaBold = [UIFont fontWithName:@"HelveticaNeue-Bold

size:40.0f];


NSString *myString = @"Some String";


[myString drawAtPoint: CGPointMake(40, 180)

withFont: helveticaBold];


}


Π’ этом ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ просто Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ ΠΆΠΈΡ€Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚ Helvetica (кСгль 40) ΠΈ рисуСм с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ тСкст Some String, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ начинаСтся Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ (40; 180).

17.3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅, установка ΠΈ использованиС Ρ†Π²Π΅Ρ‚ΠΎΠ²

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

ВрСбуСтся ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ссылки Π½Π° Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ использованиСм этих ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈ рисовании Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ Π² Π²ΠΈΠ΄Π΅. К числу Ρ„ΠΎΡ€ΠΌ ΠΌΠΎΠΆΠ½ΠΎ отнСсти тСкст, ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ, Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ ΠΈ сСгмСнты Π»ΠΈΠ½ΠΈΠΉ.

РСшСниС

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ классом UIColor.

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

Π’ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅ UIKit программисту ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ высокоуровнСвыС абстракции Ρ†Π²Π΅Ρ‚ΠΎΠ², инкапсулированныС Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ UIColor. Π’ этом классС ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса, Π² частности redColor, blueColor, brownColor ΠΈ yellowColor. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ссли вас интСрСсуСт ΠΈΠ½ΠΎΠΉ Ρ†Π²Π΅Ρ‚, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚Π΅Ρ…, Ρ‡ΡŒΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ явно Π·Π°Π΄Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° класса UIColor, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ класса colorWithRed: green: blue: alpha:, относящимся ΠΊ классу UIColor, ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ искомоС Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° относится ΠΊ Ρ‚ΠΈΠΏΡƒ UIColor. Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

β€’ red β€” доля красного Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ ΠΎΡ‚Ρ‚Π΅Π½ΠΊΠ΅. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0.0f Π΄ΠΎ 1.0f, Π³Π΄Π΅ 0.0f ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ красный ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π° 1.0f Π΄Π°Π΅Ρ‚ максимально насыщСнный Ρ‚Π΅ΠΌΠ½ΠΎ-красный Ρ†Π²Π΅Ρ‚;

β€’ green β€” доля Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ, смСшиваСмая с красным Π² Ρ†Π²Π΅Ρ‚Π΅. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0.0f Π΄ΠΎ 1.0f;

β€’ blue β€” доля Π³ΠΎΠ»ΡƒΠ±ΠΎΠ³ΠΎ, смСшиваСмая с красным ΠΈ Π·Π΅Π»Π΅Π½Ρ‹ΠΌ Π² Ρ†Π²Π΅Ρ‚Π΅. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0.0f Π΄ΠΎ 1.0f;

β€’ alpha β€” ΠΌΠ°Ρ‚ΠΎΠ²ΠΎΡΡ‚ΡŒ (Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ) Ρ†Π²Π΅Ρ‚Π°. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0.0f Π΄ΠΎ 1.0f, Π³Π΄Π΅ 1.0f Π΄Π΅Π»Π°Π΅Ρ‚ Ρ†Π²Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΌΠ°Ρ‚ΠΎΠ²Ρ‹ΠΌ, Π° 0.0f β€” ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ (ΠΈΠ½Ρ‹ΠΌΠΈ словами, Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ).


ИмСя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° UIColor, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ экзСмпляра set, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ графичСском контСкстС этот Ρ†Π²Π΅Ρ‚ использовался для рисования.

МоТно ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ класса colorWithRed: green: blue: alpha:, относящийся ΠΊ классу UIColor, для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ основных Ρ†Π²Π΅Ρ‚ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ красного. Для этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ red просто сообщаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1.0f, Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ green ΠΈ blue β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0.0f. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° alpha Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ сами.

Взглянув Π½Π° рис. 17.1, ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° для созданного Π½Π°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°-Π²ΠΈΠ΄Π° β€” сСрый, довольно нСкрасивый. Π˜ΡΠΏΡ€Π°Π²ΠΈΠΌ это. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π½Π°ΠΉΠ΄Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра viewDidLoad ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° GraphicsViewController ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ Π²ΠΈΠ΄Π° Π½Π° Π±Π΅Π»Ρ‹ΠΉ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ здСсь:


β€” (void)viewDidLoad{

[super viewDidLoad];

self.view.backgroundColor = [UIColor whiteColor];

}

Для отрисовки тСкста Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ графичСском контСкстС Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ экзСмпляра класса NSString, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом β€” Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° UIColor ΠΏΡƒΡ€ΠΏΡƒΡ€Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚, Π° ΠΏΠΎΡ‚ΠΎΠΌ нарисуСм Π² графичСском контСкстС Π²ΠΈΠ΄Π° тСкст I Learn Really Fast, использовав для этого ΠΆΠΈΡ€Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚ Helvetica кСгля 30 (ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² рассказано Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 17.1):


β€” (void)drawRect:(CGRect)rect{


/* Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Ρ†Π²Π΅Ρ‚. */

UIColor *magentaColor =[UIColor colorWithRed:0.5f

green:0.0f

blue:0.5f

alpha:1.0f];


/* Π—Π°Π΄Π°Π΅ΠΌ Ρ†Π²Π΅Ρ‚ Π² графичСском контСкстС. */

[magentaColor set];


/* Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚. */

UIFont *helveticaBold = [UIFont fontWithName:@"HelveticaNeue-Bold"

size:30.0f];


/* Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ трСбуСтся ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ. */

NSString *myString = @"I Learn Really Fast";


/* Π ΠΈΡΡƒΠ΅ΠΌ строку Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ.

Π¦Π²Π΅Ρ‚ ΠΌΡ‹ ΡƒΠΆΠ΅ установили. */

[myString drawAtPoint: CGPointMake(25, 190)


withAttributes:@{

NSFontAttributeName: helveticaBold

}];}


Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° рис. 17.7.



Рис. 17.7. Π‘Ρ‚Ρ€ΠΎΠΊΠ°, отрисованная Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Π² графичСском контСкстС

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ экзСмпляра drawInRect: withFont:, относящимся ΠΊ классу NSString, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ тСкст Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ области. ВСкст Π±ΡƒΠ΄Π΅Ρ‚ растянут, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ занял ΠΎΡ‚Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ пространство. Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ UIKit Π΄Π°ΠΆΠ΅ позволяСт ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ тСкста Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку, Ссли ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π² ΠΎΡ‚Π²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ΅ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ. Π“Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ области инкапсулированы Π² структурах CGRect. Для создания Π³Ρ€Π°Π½ΠΈΡ† ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ CGRectMake:


β€” (void)drawRect:(CGRect)rect{


/* Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Ρ†Π²Π΅Ρ‚. */

UIColor *magentaColor = [UIColor colorWithRed:0.5f

green:0.0f

blue:0.5f

alpha:1.0f];


/* Π—Π°Π΄Π°Π΅ΠΌ Ρ†Π²Π΅Ρ‚ Π² графичСском контСкстС. */

[magentaColor set];


/* Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚. */

UIFont *helveticaBold = [UIFont boldSystemFontOfSize:30];


/* Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ трСбуСтся ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ. */

NSString *myString = @"I Learn Really Fast";


/* Π ΠΈΡΡƒΠ΅ΠΌ строку Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ.

Π¦Π²Π΅Ρ‚ ΠΌΡ‹ ΡƒΠΆΠ΅ установили. */

[myString drawInRect: CGRectMake(100, /* x */

120, /* y */

100, /* ΡˆΠΈΡ€ΠΈΠ½Π° */

200) /* Π²Ρ‹ΡΠΎΡ‚Π° */


options: NSStringDrawingUsesLineFragmentOrigin

attributes:@{

NSFontAttributeName: helveticaBold

}

context: nil];


}


Ѐункция CGRectMake ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°:

β€’ x β€” ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°Ρ‡Π°Π»Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° ΠΏΠΎ оси X ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ графичСского контСкста. Π’ iOS это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ соотвСтствуСт количСству Ρ‚ΠΎΡ‡Π΅ΠΊ, отсчитанному Π²ΠΏΡ€Π°Π²ΠΎ ΠΎΡ‚ Π»Π΅Π²ΠΎΠΉ стороны ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°;

β€’ y β€” ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°Ρ‡Π°Π»Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° ΠΏΠΎ оси Y ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ графичСского контСкста. Π’ iOS это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ соотвСтствуСт количСству Ρ‚ΠΎΡ‡Π΅ΠΊ, отсчитанному Π²Π½ΠΈΠ· ΠΎΡ‚ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ стороны ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°;

β€’ width β€” ΡˆΠΈΡ€ΠΈΠ½Π° ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Π² Ρ‚ΠΎΡ‡ΠΊΠ°Ρ…;

β€’ height β€” высота ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Π² Ρ‚ΠΎΡ‡ΠΊΠ°Ρ….


Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° рис. 17.8.


Рис. 17.8. ΠžΡ‚Ρ€ΠΈΡΠΎΠ²ΠΊΠ° строки Π² ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΌ пространствС


UIColor β€” это, Π² сущности, прСдоставляСмая Π² UIKit ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° для класса CGColor ΠΈΠ· Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Core Graphics. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ ΠΊ довольно Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ β€” Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Core Graphics, β€” ΠΌΡ‹ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ ΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅ΠΌ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ использованиСм Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… состоит ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΎΡ‚Ρ‚Π΅Π½ΠΎΠΊ. Допустим, Π² ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° UIColor ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ²Ρ‹ содСрТащиСся Π² Π½Π΅ΠΌ Π΄ΠΎΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² red, green, blue ΠΈ alpha. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… состоит ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ UIColor, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги.

1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра CGColor, относящийся ΠΊ классу UIColor. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° CGColorRef, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ собой ссылку Π½Π° Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (Color Reference) β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ· Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Core Graphics.

2. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ CGColorGetComponents для получСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

3. ΠŸΡ€ΠΈ нСобходимости ΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ CGColorGetNumberOfComponents, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ количСство ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… для создания Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΡ‚Ρ‚Π΅Π½ΠΊΠ° (красный + Π·Π΅Π»Π΅Π½Ρ‹ΠΉ ΠΈ Ρ‚. Π΄.).


Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


β€” (void) drawRect:(CGRect)rect{

/* Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ†Π²Π΅Ρ‚Π° */

UIColor *steelBlueColor = [UIColor colorWithRed:0.3f

green:0.4f

blue:0.6f

alpha:1.0f];


CGColorRef colorRef = [steelBlueColor CGColor];


const CGFloat *components = CGColorGetComponents(colorRef);


NSUInteger componentsCount = CGColorGetNumberOfComponents(colorRef);


NSUInteger counter = 0;

for (counter = 0;

counter < componentsCount;

counter++){

NSLog(@"Component %lu = %.02f",

(unsigned long)counter + 1,

components[counter]);

}

}


ПослС запуска ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π² ΠΎΠΊΠ½Π΅ консоли ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄:


Component 1 = 0.30

Component 2 = 0.40

Component 3 = 0.60

Component 4 = 1.00

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

Π Π°Π·Π΄Π΅Π» 17.1.

17.4. ΠžΡ‚Ρ€ΠΈΡΠΎΠ²ΠΊΠ° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

ВрСбуСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ изобраТСния Π½Π° экранС устройства с iOS.

РСшСниС

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ класс UIImage для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ изобраТСния ΠΈ относящийся ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ drawInRect: для отрисовки ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π² графичСском контСкстС.