Π ΠΈΡ. 17.13. ΠΠ±Π»Π°ΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ, ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ°Π²Π½Π° ΠΏΠΎ ΡΠΈΡΠΈΠ½Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΎΡΠΊΠ΅
Π Π²ΠΎΡ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΠ°ΠΌΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅. ΠΠ°ΠΊ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠΎΠ±ΡΠΈΡΡ iOS SDK, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ°ΡΡΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΡΡΠ°Π²ΠΈΡΡ Π½Π΅ΡΡΠΎΠ½ΡΡΡΠΌΠΈ, Π° ΠΊΠ°ΠΊΡΡ ΡΠ°ΡΡΡ ΡΠ°ΡΡΡΠ³ΠΈΠ²Π°ΡΡ? ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, Π² iOS SDK ΡΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° ΡΠ°ΠΊΠ°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ. Π‘Π½Π°ΡΠ°Π»Π° Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ Π²Π°ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΠ°ΠΌΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ API UIImage, ΠΈΠ·ΡΡΠ΅Π½Π½ΡΡ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅. Π‘ΠΎΠ·Π΄Π°Π² ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ UIImage Ρ ΡΠ°ΠΊΠΈΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΡΠ³ΠΈΠ²Π°ΡΡ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠΉΡΠ΅ ΡΡΠΎΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π² Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° resizableImageWithCapInsets:, ΠΎΡΠ½ΠΎΡΡΡΠ΅Π³ΠΎΡΡ ΠΊΠ°ΠΊ ΡΠ°Π· ΠΊ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠΌΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡΠΉ ΡΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ, ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠΈΠΏΡ UIEdgeInsets, ΠΊΠΎΡΠΎΡΡΠΉ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π²ΠΎΡ ΡΠ°ΠΊ:
typedef struct UIEdgeInsets {
CGFloat top, left, bottom, right;
} UIEdgeInsets;
ΠΡΠ°Π΅Π²ΡΠ΅ ΠΎΡΡΡΡΠΏΡ Π½ΡΠΆΠ½Ρ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ Π΄Π΅Π²ΡΡΠΈΡΠ°ΡΡΠ½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (nine-part images Π² ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Apple). ΠΠΌΠ΅ΡΡΡΡ Π² Π²ΠΈΠ΄Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΠ΅ Π² ΡΠ΅Π±Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π΅Π²ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²:
β’ Π²Π΅ΡΡ Π½ΠΈΠΉ Π»Π΅Π²ΡΠΉ ΡΠ³ΠΎΠ»;
β’ Π²Π΅ΡΡ Π½ΠΈΠΉ ΠΊΡΠ°ΠΉ;
β’ Π²Π΅ΡΡ Π½ΠΈΠΉ ΠΏΡΠ°Π²ΡΠΉ ΡΠ³ΠΎΠ»;
β’ ΠΏΡΠ°Π²ΡΠΉ ΠΊΡΠ°ΠΉ;
β’ Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΏΡΠ°Π²ΡΠΉ ΡΠ³ΠΎΠ»;
β’ Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΊΡΠ°ΠΉ;
β’ Π½ΠΈΠΆΠ½ΠΈΠΉ Π»Π΅Π²ΡΠΉ ΡΠ³ΠΎΠ»;
β’ Π»Π΅Π²ΡΠΉ ΠΊΡΠ°ΠΉ;
β’ ΡΠ΅Π½ΡΡ.
ΠΠ° ΡΠΈΡ. 17.14 Π²ΡΠ΅ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π½Π°Π³Π»ΡΠ΄Π½ΠΎ.
Π ΠΈΡ. 17.14. ΠΠ΅Π²ΡΡΠΈΡΠ°ΡΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π² Π΄Π΅Π²ΡΡΠΈΡΠ°ΡΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΌΠΎΠ³ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠΎ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΠΈ ΠΈ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠ°ΠΊ ΡΠ³ΠΎΠ΄Π½ΠΎ. ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠ°Π·ΠΌΠ΅Ρ, Π° Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΡΡΠ°ΡΡΡΡ Π½Π΅ΡΡΠΎΠ½ΡΡΡΠΌΠΈ. ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠ΅Π½ΡΡΡΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΡΠ³Π»ΠΎΠ². ΠΠ΄Π°ΠΏΡΠ°ΡΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
β’ Π²Π΅ΡΡ Π½ΠΈΠΉ ΠΊΡΠ°ΠΉ β ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΠΎ ΡΠΈΡΠΈΠ½Π΅, Π½ΠΎ Π½Π΅ ΠΏΠΎ Π²ΡΡΠΎΡΠ΅;
ΠΏΡΠ°Π²ΡΠΉ ΠΊΡΠ°ΠΉ β ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΠΎ Π²ΡΡΠΎΡΠ΅, Π½ΠΎ Π½Π΅ ΠΏΠΎ ΡΠΈΡΠΈΠ½Π΅;
Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΊΡΠ°ΠΉ β ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΠΊΡΠ°Ρ, ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΠΎ ΡΠΈΡΠΈΠ½Π΅, Π½ΠΎ Π½Π΅ ΠΏΠΎ Π²ΡΡΠΎΡΠ΅;
Π»Π΅Π²ΡΠΉ ΠΊΡΠ°ΠΉ β ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ ΠΊΡΠ°Ρ, ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΠΎ Π²ΡΡΠΎΡΠ΅, Π½ΠΎ Π½Π΅ ΠΏΠΎ ΡΠΈΡΠΈΠ½Π΅;
ΡΠ΅Π½ΡΡ β ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΠ΅Π½ΡΡΠ° ΠΌΠΎΠ³ΡΡ ΠΌΠ΅Π½ΡΡΡΡΡ ΠΊΠ°ΠΊ ΠΏΠΎ Π²ΡΡΠΎΡΠ΅, ΡΠ°ΠΊ ΠΈ ΠΏΠΎ ΡΠΈΡΠΈΠ½Π΅.
ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡΡΡΡΠΏΠΎΠ² ΠΏΠΎ Π²Π΅ΡΡ Π½Π΅ΠΌΡ, Π»Π΅Π²ΠΎΠΌΡ, Π½ΠΈΠΆΠ½Π΅ΠΌΡ ΠΈ ΠΏΡΠ°Π²ΠΎΠΌΡ ΠΊΡΠ°ΡΠΌ Π·Π°Π΄Π°ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ°ΡΡΡΠ³ΠΈΠ²Π°ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ Π·Π°Π΄Π°Π»ΠΈ Π΄Π»Ρ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΊΡΠ°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 10, Π΄Π»Ρ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΠΊΡΠ°Ρ β Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 11, Π΄Π»Ρ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ ΠΊΡΠ°Ρ β Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 14 ΠΈ Π΄Π»Ρ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ β 5. Π’Π°ΠΊ Π²Ρ ΠΏΡΠΈΠΊΠ°Π·ΡΠ²Π°Π΅ΡΠ΅ iOS ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΡΠ΅ΡΠ΅Π· ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΡ Π»ΠΈΠ½ΠΈΡ Π² 10 ΡΠΎΡΠΊΠ°Ρ ΠΎΡ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΊΡΠ°Ρ, Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΡ Π»ΠΈΠ½ΠΈΡ Π² 11 ΡΠΎΡΠΊΠ°Ρ ΠΎΡ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΠΊΡΠ°Ρ, Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΡ Π»ΠΈΠ½ΠΈΡ Π² 14 ΡΠΎΡΠΊΠ°Ρ ΠΎΡ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ ΠΊΡΠ°Ρ ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΡ Π»ΠΈΠ½ΠΈΡ Π² 5 ΡΠΎΡΠΊΠ°Ρ ΠΎΡ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΊΡΠ°Ρ. ΠΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½Π°Ρ ΠΎΠ±Π»Π°ΡΡΡ, Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½Π°Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ Π»ΠΈΠ½ΠΈΡΠΌΠΈ, ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠ°Π·ΠΌΠ΅Ρ (ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΠΎΠΉ), Π° ΠΎΠ±Π»Π°ΡΡΡ Π²Π½Π΅ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΡΠ° β Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ. ΠΡΠ»ΠΈ Π²ΡΠ΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠ°Π½Π½ΡΠΌ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠ΅Π±Π΅ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ (Π²Π°ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅), Π° Π·Π°ΡΠ΅ΠΌ Π½Π°ΡΠ΅ΡΡΠΈΡΠ΅ Π²Π½ΡΡΡΠΈ Π½Π΅Π³ΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ. Π Π°Π·ΠΌΠ΅ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° ΠΌΠΎΠ³ΡΡ ΠΌΠ΅Π½ΡΡΡΡΡ, ΡΠ°Π·ΠΌΠ΅ΡΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ β Π½Π΅Ρ. ΠΡΠ΅Π΄Π»Π°Π³Π°Ρ Π²Π½ΠΎΠ²Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ Π½Π° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅ (ΡΠΈΡ. 17.15).
Π ΠΈΡ. 17.15. Π Π°Π·ΠΌΠ΅ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΏΠΎ Π²Π΅Π»ΠΈΡΠΈΠ½Π΅ ΠΎΡΡΡΡΠΏΠΎΠ² ΠΎΡ ΠΊΡΠ°Π΅Π²
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΡΡΡΡΠΏΡ ΡΠ»Π΅Π²Π° ΠΈ ΡΠΏΡΠ°Π²Π° Π½Π° ΡΠΈΡ. 17.15 ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ. ΠΡΡΡΡΠΏΡ ΠΎΡ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΈ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΠΊΡΠ°Π΅Π² ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ. Π― ΡΠΊΠ°Π·Π°Π» Π΄Π»Ρ Π½ΠΈΡ ΡΠ°Π·Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π»ΠΈΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΡΡΡΡΠΏΠΎΠ² Π±ΡΠ» Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΠΈ Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ. ΠΡΠ»ΠΈ Π±Ρ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡΡΡΡΠΏΠΎΠ² Π±ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ, ΡΠΎ ΠΏΠΎΠ·ΠΆΠ΅ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π·Π°ΠΏΡΡΠ°ΡΡΡΡ: Π° ΠΎ ΠΊΠ°ΠΊΠΎΠΌ ΠΈΠ· ΠΎΡΡΡΡΠΏΠΎΠ² ΡΠ΅ΠΉΡΠ°Ρ ΠΈΠ΄Π΅Ρ ΡΠ΅ΡΡ?
ΠΠ»Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΈΡ. 17.15, ΠΊΡΠ°Π΅Π²ΡΠ΅ ΠΎΡΡΡΡΠΏΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
UIEdgeInsets edgeInsets;
edgeInsets.left = 20.0f;
edgeInsets.top = 10.0f;
edgeInsets.right = 24.0f;
edgeInsets.bottom = 14.0f;
Π ΡΠ΅ΠΏΠ΅ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΊ ΡΡΠ΅Π±Π½ΠΎΠΌΡ ΠΊΠΎΠ΄Ρ. ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΏΠΎΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π½Π° ΡΠΈΡ. 17.13, Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ Π΅Π΅ Π² ΡΠ΅Π½ΡΡΠ΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎΡΡ Π² Π½Π°ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ Π²ΠΈΠ΄Π°. ΠΠ° ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Stretched Image on Button (ΠΠ΄Π°ΠΏΡΠΈΠ²Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅). ΠΠ½ΠΎΠΏΠΊΠ° Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ 200 ΡΠΎΡΠ΅ΠΊ Π² ΡΠΈΡΠΈΠ½Ρ ΠΈ 44 ΡΠΎΡΠΊΠΈ Π² Π²ΡΡΠΎΡΡ. ΠΠΎΡ Π½Π°Ρ ΠΊΠΎΠ΄:
#import Β«ViewController.hΒ»
@interface ViewController ()
@property (nonatomic, strong) UIButton *button;
@end
@implementation ViewController
β (void)viewDidLoad{
[super viewDidLoad];
/* ΠΠ½ΡΡΠ°Π½ΡΠΈΡΡΠ΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ */
self.button = [UIButton buttonWithType: UIButtonTypeCustom];
[self.button setFrame: CGRectMake(0.0f, 0.0f, 200.0f, 44.0f)];
/* ΠΠ°Π΄Π°Π΅ΠΌ Π½Π°Π΄ΠΏΠΈΡΡ Π΄Π»Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ */
[self.button setTitle:@"Stretched Image on Button"
forState: UIControlStateNormal];
/* ΠΠΎΡΡΠ΅ΠΊΡΠΈΡΡΠ΅ΠΌ ΡΡΠΈΡΡ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ° */
self.button.titleLabel.font = [UIFont systemFontOfSize:15.0f];
/* Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ */
UIImage *image = [UIImage imageNamed:@"Button"];
UIEdgeInsets edgeInsets;
edgeInsets.left = 14.0f;
edgeInsets.top = 0.0f;
edgeInsets.right = 14.0f;
edgeInsets.bottom = 0.0f;
image = [image resizableImageWithCapInsets: edgeInsets];
/* ΠΠ°Π΄Π°Π΅ΠΌ ΡΠΎΠ½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ */
[self.button setBackgroundImage: image forState: UIControlStateNormal];
[self.view addSubview: self.button];
self.button.center = self.view.center;
}
@end
Π’Π΅ΠΏΠ΅ΡΡ, Π·Π°ΠΏΡΡΡΠΈΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ, ΠΊΠ°ΠΊ Π½Π° ΡΠΈΡ. 17.16.
Π ΠΈΡ. 17.16. ΠΠ° ΡΠΊΡΠ°Π½Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠ° Ρ Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΡΠΌ ΡΠΎΠ½ΠΎΠ²ΡΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅
Π Π°Π·Π΄Π΅Π» 17.4.
17.6. ΠΡΡΠΈΡΠΎΠ²ΠΊΠ° Π»ΠΈΠ½ΠΈΠΉ
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎ ΡΠΈΡΠΎΠ²Π°ΡΡ Π»ΠΈΠ½ΠΈΠΈ Π² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΠΎΠ»ΡΡΠΈΡΠ΅ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°, Π° ΠΏΠΎΡΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ CGContextMoveToPoint ΠΈ CGContextAddLineToPoint Π΄Π»Ρ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π»ΠΈΠ½ΠΈΠΈ.
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
ΠΠΎΠ³Π΄Π° ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΈΠ³ΡΡ Π² iOS ΠΈΠ»ΠΈ OS X, ΠΌΡ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΠΌ ΠΏΡΡΠΈ (paths). Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΏΡΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅? ΠΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ΅ΡΠΈΡΠΌΠΈ ΡΠΎΡΠ΅ΠΊ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΌΠΈ Π½Π° ΡΠΊΡΠ°Π½Π΅. ΠΠ΅ΠΆΠ΄Ρ ΠΏΡΡΡΠΌΠΈ ΠΈ Π»ΠΈΠ½ΠΈΡΠΌΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ°Π·Π½ΠΈΡΠ°. ΠΡΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»ΠΈΠ½ΠΈΠΉ, Π½ΠΎ Π»ΠΈΠ½ΠΈΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΡΠ΅ΠΉ. Π‘ΡΠΈΡΠ°ΠΉΡΠ΅, ΡΡΠΎ ΠΏΡΡΡ β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ΅ΡΠΈΡ ΡΠΎΡΠ΅ΠΊ.
ΠΠΈΠ½ΠΈΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ ΠΏΡΡΡΠΌΠΈ. Π£ΠΊΠ°ΠΆΠΈΡΠ΅ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠΊΠΈ ΠΏΡΡΠΈ, Π° ΠΏΠΎΡΠΎΠΌ ΠΏΡΠΈΠΊΠ°ΠΆΠΈΡΠ΅ Core Graphics Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠΎΡ ΠΏΡΡΡ Π·Π° Π²Π°Ρ. Core Graphics ΡΡΠΈΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π»ΠΈΠ½ΠΈΡ Π²Π΄ΠΎΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΡΠΈ, ΠΈ Π½Π°ΡΠΈΡΡΠ΅Ρ Π΅Π³ΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ Π²Π°ΠΌΠΈ ΡΠ²Π΅ΡΠΎΠΌ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 17.3).
ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΡΠΈ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ (Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 17.7), Π° ΠΏΠΎΠΊΠ° ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΠΌΡΡ Π½Π° ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΡΠ΅ΠΉ ΠΏΡΡΠΌΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ.
1. ΠΡΠ±ΡΠ°ΡΡ ΡΠ²Π΅Ρ Π² Π²Π°ΡΠ΅ΠΌ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 17.3).
2. ΠΠΎΠ»ΡΡΠΈΡΡ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° β ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ UIGraphicsGetCurrentContext.
3. ΠΠ°Π΄Π°ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΡΠΎΡΠΊΡ Π΄Π»Ρ Π»ΠΈΠ½ΠΈΠΈ, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΎΠΉ CGContextMoveToPoint.
4. ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΠΏΠ΅ΡΠΎ Π² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΎΠΉ CGContextAddLineToPoint, ΠΈ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠΊΡ Π»ΠΈΠ½ΠΈΠΈ.
5. Π‘ΠΎΠ·Π΄Π°ΡΡ Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΡΠΉ ΠΏΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ CGContextStrokePath. ΠΡΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΎΡΡΠΈΡΡΠ΅Ρ ΠΏΡΡΡ Π² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π² ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π²Π°ΠΌΠΈ ΡΠ²Π΅Ρ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΎΠΉ CGContextSetLineWidth, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°Π΄Π°Π΅Ρ ΡΠΎΠ»ΡΠΈΠ½Ρ Π»ΠΈΠ½ΠΈΠΉ, ΠΎΡΡΠΈΡΠΎΠ²ΡΠ²Π°Π΅ΠΌΡΡ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅. ΠΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ β Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ ΡΠΈΡΡΠ΅ΡΠ΅, Π° Π²ΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ β ΡΠΎΠ»ΡΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΈ, Π²ΡΡΠ°ΠΆΠ°Π΅ΠΌΠ°Ρ ΡΠΈΡΠ»ΠΎΠΌ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ (CGFloat).
Π iOS ΡΠΎΠ»ΡΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅ΡΡΠ΅ΡΡΡ Π² Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΡΠΊΠ°Ρ .
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
β (void)drawRect:(CGRect)rect{
/* ΠΠ°Π΄Π°Π΅ΠΌ ΡΠ²Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΌ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΎΡΡΠΈΡΠΎΠ²ΡΠ²Π°ΡΡ Π»ΠΈΠ½ΠΈΡ. */
[[UIColor brownColor] set];
/* ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ. */
CGContextRef currentContext = UIGraphicsGetCurrentContext();
/* ΠΠ°Π΄Π°Π΅ΠΌ ΡΠΎΠ»ΡΠΈΠ½Ρ Π»ΠΈΠ½ΠΈΠΈ. */
CGContextSetLineWidth(currentContext,
5.0f);
/* Π ΡΡΠΎΠΉ ΡΠΎΡΠΊΠ΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Π»ΠΈΠ½ΠΈΡ. */
CGContextMoveToPoint(currentContext,
50.0f,
10.0f);
/* Π ΡΡΠΎΠΉ ΡΠΎΡΠΊΠ΅ Π»ΠΈΠ½ΠΈΡ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ. */