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

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

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

1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Xcode.

2. Π’ мСню File (Π€Π°ΠΉΠ») Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ New β€” Project (Новый β€” ΠŸΡ€ΠΎΠ΅ΠΊΡ‚).

3. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² Π»Π΅Π²ΠΎΠΉ части экрана Π²Ρ‹Π±Ρ€Π°Π½Π° катСгория iOS. Π’ этой ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Application (ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅) (рис. 17.1)

4. Π’ ΠΏΡ€Π°Π²ΠΎΠΉ части экрана Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Single View Application (ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с СдинствСнным Π²ΠΈΠ΄ΠΎΠΌ) ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Next (Π”Π°Π»Π΅Π΅) (рис. 17.1).


Рис. 17.1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ прилоТСния с СдинствСнным Π²ΠΈΠ΄ΠΎΠΌ для iOS Π² Xcode


5. Π’ ΠΏΠΎΠ»Π΅ Product Name (НазваниС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°) (рис. 17.2) Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ имя вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.


Рис. 17.2. Установка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² для Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Xcode


6. Π’ ΠΏΠΎΠ»Π΅ Company Identifier (Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ) Π²Π²Π΅Π΄ΠΈΡ‚Π΅ прСфикс, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌΡƒ Π²Π°ΠΌΠΈ названию ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ записываСтся Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ com.company.

7. Π˜Π· списка Devices (Устройства) Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Universal, Π° Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Next (Π”Π°Π»Π΅Π΅).

8. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΎΠΊΠ½Π΅ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅, Π³Π΄Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Create (Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ).


Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Xcode ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚. Π’ Π»Π΅Π²ΠΎΠΉ части ΠΎΠΊΠ½Π° Xcode раскройтС Π³Ρ€ΡƒΠΏΠΏΡƒ Graphics (Π“Ρ€Π°Ρ„ΠΈΠΊΠ°) ΠΈ просмотритС всС Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Xcode создала для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ потрСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π²ΠΈΠ΄Π° для ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π°. Для этого Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги.

1. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Π½Π° ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Xcode ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ New File (Новый Ρ„Π°ΠΉΠ»).

2. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ New File (Новый Ρ„Π°ΠΉΠ») слСва Π² качСствС ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΡƒΠΊΠ°Π·Π°Π½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ iOS, ΠΈ Π² качСствС ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Cocoa Touch (рис. 17.3)

3. Π’ ΠΏΡ€Π°Π²ΠΎΠΉ части ΠΎΠΊΠ½Π° Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ класс Objective-C, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Next (Π”Π°Π»Π΅Π΅) (см. рис. 17.3).


Рис. 17.3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ класса Objective-C Π² Xcode


4. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΎΠΊΠ½Π΅ (рис. 17.4) Π² ΠΏΠΎΠ»Π΅ Subclass of (Подкласс) написано UIView, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π·Π°Π΄Π°ΠΉΡ‚Π΅ для вашСго класса имя View. Π”Π°Π»Π΅Π΅ сохранитС Ρ„Π°ΠΉΠ» Π½Π° дискС ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Next (Π”Π°Π»Π΅Π΅).


Рис. 17.4. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ подкласса ΠΎΡ‚ UIView


5. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ваш Ρ„Π°ΠΉΠ» раскадровки для iPhone ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π²ΠΈΠ΄ для ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π°. РаскройтС Ρ€Π°Π·Π΄Π΅Π» Utilities (Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ) Π² конструкторС интСрфСйсов ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ имя класса Ρ‚ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится ваш ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π°, Π½Π° View (рис. 17.5).


Рис. 17.5. ИзмСнСниС ΠΈΠΌΠ΅Π½ΠΈ класса ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° Π² раскадровкС


ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ создали ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‚Π΅ ΠΆΠ΅ манипуляции понадобится Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ»Π΅ раскадровки для iPad. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π΄Π²Π° этих Ρ„Π°ΠΉΠ»Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Main_iPhone.storyboard ΠΈ Main_iPad.storyboard.

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ написанию ΠΊΠΎΠ΄Π°. А вСдь ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ ΠΌΠ½ΠΎΠ³ΠΎ β€” просто ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс Π²ΠΈΠ΄Π°, относящСгося ΠΊ Ρ‚ΠΈΠΏΡƒ UIView, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ·ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ этого класса. ΠŸΠΎΡ‚ΠΎΠΌ ΠΌΡ‹ воспользовались конструктором интСрфСйсов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ Π² качСствС класса Π²ΠΈΠ΄Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° Ρ‚ΠΎΡ‚ самый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π²ΠΈΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ создали Ρ€Π°Π½Π΅Π΅. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²ΠΈΠ΄ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ экзСмпляром созданного Π½Π°ΠΌΠΈ класса View.

Полагаю, Π²Ρ‹ ΡƒΠΆΠ΅ просмотрСли содСрТимоС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°-Π²ΠΈΠ΄Π°, сгСнСрированного Xcode. Один ΠΈΠ· самых Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° β€” drawRect:. Cocoa Touch автоматичСски Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ врСмя ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π²ΠΈΠ΄. Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ-Π²ΠΈΠ΄Ρƒ ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ своС содСрТимоС Π² графичСском контСкстС. Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Cocoa Touch автоматичСски Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ Ρ‚Π°ΠΊΠΎΠΉ контСкст для Π²ΠΈΠ΄Π°. ГрафичСский контСкст ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с холстом (Canvas). Он ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство свойств, Π² частности Ρ†Π²Π΅Ρ‚ кисти (Pen Color), Π΅Π΅ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Ρƒ (Pen Thickness) ΠΈ Ρ‚. Π΄. ИмСя контСкст, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ прямо Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° drawRect:, Π° Cocoa Touch Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ свойства контСкста Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΊ вашим рисункам. ΠœΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ обсудим эти Π΄Π΅Ρ‚Π°Π»ΠΈ Π² дальнСйшСм, Π° ΠΏΠΎΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π±ΠΎΠ»Π΅Π΅ интСрСсным Ρ‚Π΅ΠΌΠ°ΠΌ.

17.1. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ²

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

ВрСбуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹, прСдустановлСнныС Π½Π° устройствС с iOS, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π½Π° экранС ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ тСкст.

РСшСниС

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

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

Π¨Ρ€ΠΈΡ„Ρ‚Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для отобраТСния тСкста Π² графичСском ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ интСрфСйсС. Π’ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅ UIKit программисту ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ высокоуровнСвыС API, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ пСрСчислСниС, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΈ использованиС ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ². Π’ Cocoa Touch ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² классС UIFont. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ устройствС с iOS Π΅ΡΡ‚ΡŒ встроСнныС систСмныС ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹. Π¨Ρ€ΠΈΡ„Ρ‚Ρ‹ распрСдСлСны ΠΏΠΎ сСмСйствам (Family), Π° Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сСмСйствС Π΅ΡΡ‚ΡŒ Π³Π°Ρ€Π½ΠΈΡ‚ΡƒΡ€Ρ‹ (Faces). НапримСр, Helvetica β€” это сСмСйство ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ², Π° Helvetica Bold β€” ΠΎΠ΄Π½Π° ΠΈΠ· Π³Π°Ρ€Π½ΠΈΡ‚ΡƒΡ€ этого сСмСйства. Π§Ρ‚ΠΎΠ±Ρ‹ ΡˆΡ€ΠΈΡ„Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ Π³Π°Ρ€Π½ΠΈΡ‚ΡƒΡ€Ρƒ ΡˆΡ€ΠΈΡ„Ρ‚Π° (фактичСски Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅), Π° Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π³Π°Ρ€Π½ΠΈΡ‚ΡƒΡ€Ρƒ, Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ сСмСйство. Π˜Ρ‚Π°ΠΊ, для Π½Π°Ρ‡Π°Π»Π° пСрСчислим всС сСмСйства ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ установлСны Π½Π° устройствС, воспользовавшись ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ familyNames класса UIFont:


β€” (void) enumerateFonts{


for (NSString *familyName in [UIFont familyNames]){

NSLog(@"Font Family = %@", familyName);

}


}

Запустив эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² симуляторС, я ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹:

Font Family = Thonburi

Font Family = Academy Engraved LE

Font Family = Snell Roundhand

Font Family = Avenir

Font Family = Marker Felt

Font Family = Geeza Pro

Font Family = Arial Rounded MT Bo Font Family = Trebuchet MS

…


Выстроив Ρ‚Π°ΠΊΠΎΠΉ список сСмСйств ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ², ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π³Π°Ρ€Π½ΠΈΡ‚ΡƒΡ€Ρ‹ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сСмСйствС. Π‘ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ fontNamesForFamilyName: класса UIFont, Π° Π² ΠΎΡ‚Π²Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ массив Π½Π°Π·Π²Π°Π½ΠΈΠΉ Π³Π°Ρ€Π½ΠΈΡ‚ΡƒΡ€ ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ сСмСйства ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€:


β€” (void) enumerateFonts{


for (NSString *familyName in [UIFont familyNames]){

NSLog(@"Font Family = %@", familyName);

for (NSString *fontName in

[UIFont fontNamesForFamilyName: familyName]){

NSLog(@"\t%@", fontName);


}

}


}

Запустив этот ΠΊΠΎΠ΄ Π² симуляторС iOS, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ:

Font Family = Thonburi Thonburi-Bold Thonburi

Font Family = Academy Eng AcademyEngravedLetPla

Font Family = Snell Round SnellRoundhand-Bold SnellRoundhand-Black SnellRoundhand

…


Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Thonburi β€” это сСмСйство ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ², Π° Thonburi-Bold β€” ΠΎΠ΄Π½Π° ΠΈΠ· Π³Π°Ρ€Π½ΠΈΡ‚ΡƒΡ€ этого сСмСйства. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, зная имя ΡˆΡ€ΠΈΡ„Ρ‚Π°, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚ΠΈΠΏΠ° UIFont с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° класса fontWithName: size:, относящСгося ΠΊ классу UIFont:


__unused UIFont *font = [UIFont fontWithName:@"Thonburi-Bold"

size:12.0f];

Если Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° класса fontWithName: size:, относящСгося ΠΊ классу UIFont, ΠΈΠΌΠ΅Π΅ΠΌ nil, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΡˆΡ€ΠΈΡ„Ρ‚ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΡˆΡ€ΠΈΡ„Ρ‚ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Π²Π°ΠΌΠΈ ΠΈΠΌΠ΅Π½Π΅ΠΌ присутствуСт Π² систСмС. Для этого сначала пСрСчислитС всС сСмСйства ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ², Π° ΠΏΠΎΡ‚ΠΎΠΌ всС названия Π³Π°Ρ€Π½ΠΈΡ‚ΡƒΡ€ ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСмСйства.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ экзСмпляра systemFontOfSize:, относящимся ΠΊ классу UIFont (ΠΈΠ»ΠΈ Π΅Π³ΠΎ Β«ΠΆΠΈΡ€Π½Ρ‹ΠΌΒ» Π°Π½Π°Π»ΠΎΠ³ΠΎΠΌ, boldSystemFontOfSize:), для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… систСмных ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² β€” Π³Π΄Π΅ Π±Ρ‹ ΠΎΠ½ΠΈ Π½ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ β€” прямо Π½Π° устройствС, Π³Π΄Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ваш ΠΊΠΎΠ΄. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ систСмный ΡˆΡ€ΠΈΡ„Ρ‚ Π² iOS β€” Helvetica.

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΠ² ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Ρ€Π°Π·Π΄Π΅Π»Ρƒ 17.2. Π’Π°ΠΌ ΠΌΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ ΡˆΡ€ΠΈΡ„Ρ‚Π°ΠΌΠΈ для отрисовки тСкста Π² графичСском контСкстС.

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

Π Π°Π·Π΄Π΅Π» 17.2.

17.2. ΠžΡ‚Ρ€ΠΈΡΠΎΠ²ΠΊΠ° тСкста

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

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

РСшСниС

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ drawAtPoint: withFont: класса NSString.

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

Для отрисовки тСкста ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, входящими Π² состав класса NSString. Один ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² β€” drawAtPoint: withFont:. Но ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π΅Ρ‰Π΅ Ρ€Π°Π· ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ всС инструкции ΠΈΠ· ввСдСния ΠΊ этой Π³Π»Π°Π²Π΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-Π²ΠΈΠ΄, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ подклассом ΠΎΡ‚ UIView. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ GraphicsViewControllerView. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ этот Ρ„Π°ΠΉΠ». Если Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра drawRect:, относящийся ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ-Π²ΠΈΠ΄Ρƒ, Ρ‚ΠΎ раскоммСнтируйтС Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚:


#import Β«View.hΒ»


@implementation View


β€” (id)initWithFrame:(CGRect)frame{

self = [super initWithFrame: frame];

if (self) {

// ΠšΠΎΠ΄ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

}

return self;

}


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


}


@end


ИмСнно Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ drawRect: Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ всС рисованиС, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ Ρ€Π°Π½Π΅Π΅. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΡˆΡ€ΠΈΡ„Ρ‚Π°, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π½Π° экранС ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ строку, которая Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ 40 ΠΏΠΎ оси X ΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ 180 ΠΏΠΎ оси Y (рис. 17.6):