Müasir mobil tətbiqlərin interfeyslərini yaradarkən mətn ilə işləmək əsas vəzifədir. Şrift seçimindən simvollar arasındakı məsafənin tənzimlənməsinə qədər — hər bir aspekt məhsulun qavranılmasına təsir göstərir. Apple NSAttributedString Sənədlərinə görə, düzgün mətn formatlaşdırması birbaşa oxunaqlılıq və interfeysin əlçatanlığı ilə əlaqəlidir.
Əsas Məqamlar
NSAttributedString formatlaşdırılmış mətnlə işləmək üçün əsas iOS sinfidir. Fərdi simvollara və ya diapazonlara atributlar tətbiq etməyə imkan verir: UIFont vasitəsilə şrift, UIColor vasitəsilə rəng, kern vasitəsilə simvol məsafəsi və NSMutableParagraphStyle vasitəsilə sətir aralığı. Mobil tətbiqlərdə NSAttributedString hər yerdə istifadə olunur — UILabel-dan redaktə dəstəyi olan mürəkkəb UITextView-ə qədər.
UIFont iOS-da şriftlərlə işləmək üçün əsas sinifdir. Sistem şriftlərini, xüsusi şriftləri və Dynamic Type-ı dəstəkləyir. UIFont(name:size:) ada görə şrift yükləyir, UIFont.systemFont(ofSize:weight:) sistem şriftini yükləyir. UIFontDescriptor mövcud şrifti dəyişdirməyə imkan verir: ölçüsünü, çəkisini dəyişmək və ya transformasiya matrisi əlavə etmək. Xüsusi şriftlər üçün .ttf faylı layihəyə əlavə edilir və Info.plist-də Fonts provided by application açarı altında qeydiyyatdan keçirilir.
let attributes: [NSAttributedString.Key: Any] = [
.font: UIFont(name: "HelveticaNeue-Bold", size: 18) as Any,
.foregroundColor: UIColor.darkGray as Any,
.kern: 1.5 as Any
]
let attributedString = NSAttributedString(
string: "Форматированный текст",
attributes: attributes
)
label.attributedText = attributedString
NSMutableParagraphStyle paraqraf göstərilməsini konfiqurasiya etmək üçün ParagraphStyle-ın dəyişdirilə bilən versiyasıdır. O, düzləndirməni (alignment), sətir aralığını (lineSpacing), abzasları (headIndent, tailIndent) və kəsmə rejimini (lineBreakMode) idarə edir. ParagraphStyle mobil cihazlarda uzun mətnlərin oxunaqlılığı üçün kritikdir: düzgün lineSpacing sətirlərin birləşməsinin qarşısını alır, lineBreakMode isə sözlərin kəsilməsinin qarşısını alır. paragraphSpacing ayarı paraqraflar arasındakı boşluğu müəyyən edir.
SpannableString Android-də mətn formatlaşdırması üçün əsas vasitədir. Hər biri bir aspektdən məsul olan Span obyektləri mexanizmi vasitəsilə işləyir: StyleSpan qalın və ya kursiv üçün, ForegroundColorSpan rəng üçün, URLSpan keçidlər üçün, UnderlineSpan altından xətt çəkmək üçün. SpannableStringBuilder NSMutableAttributedString-in analoqudur və çoxsaylı fraqmentlərdən mətn qurmağa imkan verir. Mobil tətbiqlərdə formatlaşdırılmış mətnlə çevik interfeyslər yaratmaq üçün SpannableString-i başa düşmək vacibdir.
Typeface Android-də şriftlərlə işləmək üçün sinifdir. O, sistem şriftləri Roboto və Noto-nu, həmçinin xüsusi şriftləri dəstəkləyir. Typeface.createFromResource() res/font/ qovluğundan şrift yükləyir, Typeface.createFromAsset() assets qovluğundan yükləyir. Android 8.0+ XML-də şrift ailələrini dəstəkləyir, çoxsaylı şrift fayllarını bir resursda birləşdirir. Android-də mobil tətbiqlərdə mətn üçün xüsusi şrift android:fontFamily atributu vasitəsilə və ya proqramlı şəkildə setTypeface() istifadə edərək təyin edilir.
TextMeasurer (API 29+) View-ə bağlanmadan mətni ölçmək üçün müasir vasitədir. O, render etmədən əvvəl eni, hündürlüyü və simvol mövqelərini hesablayır. Köhnə API-lərdə tək sətirli mətn üçün Paint.measureText() və ya çox sətirli mətn üçün StaticLayout istifadə olunur. TextMeasurer xüsusilə Canvas.drawText() vasitəsilə mətnin çəkildiyi xüsusi View-lərdə faydalıdır. Düzgün ölçmə interfeysdə simvolların kəsilməsinin qarşısını alır.
val spannable = SpannableString("Жирный текст с цветом")
spannable.setSpan(
StyleSpan(Typeface.BOLD),
0, 6,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
spannable.setSpan(
ForegroundColorSpan(Color.RED),
14, 19,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
textView.text = spannable
Mobil tətbiqlərdə tipoqrafiya şriftlərin, simvol məsafəsinin və sətir aralığının hərtərəfli konfiqurasiyasıdır. Mobil inkişafda düzgün tipoqrafiya birbaşa mətnin oxunaqlılığına və interfeysin vizual qavranılmasına təsir göstərir. Hər iki platformada mövcud olan əsas parametrlərə baxaq.
Kerninq müəyyən simvol cütləri (AV, To, Wa) arasındakı məsafənin tənzimlənməsidir. Trekinq bütün mətn və ya onun bir hissəsi üçün vahid simvol məsafəsidir. iOS-da kerninq NSKernAttributeName vasitəsilə, Android-də — TextView-in letterSpacing xüsusiyyəti vasitəsilə təyin edilir. Mənfi dəyərlər simvolları yaxınlaşdırır, müsbət dəyərlər uzaqlaşdırır. Mobil inkişafda tipoqrafiya bu parametrlərin diqqətli tənzimlənməsini tələb edir: böyük başlıqlar üçün simvol məsafəsi adətən artırılır, əsas mətn üçün standart qalır.
| Parametr | iOS | Android |
|---|---|---|
| Stilləşdirilmiş Sətir | NSAttributedString | SpannableString |
| Şrift | UIFont / CTFont | Typeface |
| Simvol Məsafəsi | NSKernAttributeName | letterSpacing |
| Sətir Aralığı | lineSpacing | lineSpacingExtra |
| Liqaturalar | NSLigatureAttributeName | OpenType xüsusiyyətləri |
| Ellipsis | lineBreakMode .byTruncatingTail | android:ellipsize |
Liqaturalar iki və ya daha çox simvolun birləşməsini (fi, fl, ffi) əvəz edən xüsusi gliflərdir. iOS-da liqaturalar NSLigatureAttributeName vasitəsilə idarə olunur: 0 — söndürülmüş, 1 — standart, 2 — bütün mövcud. Android-də liqaturalar OpenType xüsusiyyətləri vasitəsilə şrift səviyyəsində idarə olunur. Liqaturaları aktivləşdirmək mətnin görünüşünü yaxşılaşdırır, xüsusən də serif şriftlərində. Mobil inkişafda tipoqrafiya liqaturalardan əsasən başlıqlar və loqolar üçün istifadə edir.
Xüsusi şriftlər tətbiq üçün unikal vizual stil yaratmağın əsas vasitələrindən biridir. Onlar markanı vurğulamağa və istifadəçi təcrübəsini yaxşılaşdırmağa kömək edir. Mobil tətbiqlərdə xüsusi şriftlər başlıqlar, loqolar, vurğu elementləri və korporativ şəxsiyyət üçün istifadə olunur.
Dəyişən Şriftlər bir faylın çoxsaylı stillər ehtiva etdiyi müasir şrift texnologiyasıdır: incədən çox qalına, dardan genişə qədər. Bu, bir neçə şrift faylını bir faylla əvəz edərək tətbiq ölçüsünü azaldır. iOS-da Dəyişən Şriftlər weight parametri ilə UIFont vasitəsilə dəstəklənir. Android-də — dəyişkənlik oxlarını (wght, wdth, slnt) göstərən Typeface.Builder vasitəsilə. Dəyişən Şriftlərdən istifadə mobil tətbiqlərdə tipoqrafiyanı sadələşdirir: tərtibatçı hər bir stil üçün ayrıca fayl yükləməyə ehtiyac duymur.
let customFont = UIFont(name: "CustomFont-Regular", size: 16)
let scaledFont = UIFontMetrics.default
.scaledFont(for: customFont)
label.font = scaledFont
label.adjustsFontForContentSizeCategory(true)
iOS-da NSTextAttachment NSAttributedString daxilində UIImage yerləşdirməyə imkan verir — şəkil baza xətti ilə düzlənir və mətnlə birlikdə hərəkət edir. Android-də analoqu SpannableString daxilində ImageSpan-dir. Hər iki yanaşma emoji ilə söhbət, nişanlarla xəbər lentləri və xüsusi qeyd qutuları olan formalar üçün faydalıdır. Mətn və qrafiklərin ahəngdar görünməsi üçün şəklin şrift hündürlüyünə uyğun miqyaslanması vacibdir.
Əsas formatlaşdırma ilə yanaşı, mobil tətbiqlərdə mətn əlavə vizual effektləri dəstəkləyir: kölgələr, konturlar, üstündən xətt çəkmə və altından xətt çəkmə. Bu vasitələr tipoqrafiyanın imkanlarını genişləndirir, lakin oxunaqlılığı qorumaq üçün diqqətli tətbiq tələb edir.
iOS-da mətn kölgəsi offset, blurRadius və color ilə NSShadow vasitəsilə təyin edilir. Kontur — NSStrokeWidthAttributeName vasitəsilə: mənfi dəyərlər konturla doldurma yaradır, müsbət dəyərlər yalnız kontur yaradır. Üstündən xətt çəkmə — NSUnderlineStyle (.single, .thick, .double). Android-də TextView kölgəsi android:shadowRadius, android:shadowDx, android:shadowDy vasitəsilə konfiqurasiya edilir. SpannableString StrikethroughSpan və UnderlineSpan-ı dəstəkləyir. Android-də mətn konturu OutlineSpan və ya xüsusi şrift vasitəsilə həyata keçirilir.
Ellipsis konteyner daşdıqda mətnin üç nöqtə ilə kəsilməsidir. iOS-da lineBreakMode .byTruncatingTail və numberOfLines vasitəsilə konfiqurasiya edilir. Android-də — android:ellipsize="end" və android:maxLines vasitəsilə. Marquee Android-də android:ellipsize="marquee" vasitəsilə mövcud olan sürüşən mətn animasiyasıdır. iOS-da daxili analoq yoxdur — MarqueeLabel kitabxanası istifadə olunur. Məzmunun kəsilməsinin qarşısını almaq üçün mobil tətbiqlərdə bütün tək sətirli mətnlər üçün ellipsis məcburidir.
Dynamic Type istifadəçinin Əlçatanlıq parametrlərinə əsasən şrift ölçüsünü tənzimləyən iOS-da adaptiv mətn sistemidir. Xüsusi şriftləri miqyaslamaq üçün UIFontMetrics istifadə edin. Dynamic Type əlçatanlığa uyğun tətbiqlər üçün məcburidir. Android-də analoq sp vahidləri və scaledPixels-dir, onlar sistem mətn ölçüsü parametrlərinə uyğun miqyaslanır.
Tez-tez Verilən Suallar
NSAttributedString simvol və diapazon səviyyəsində şrift, rəng və stil atributları ilə formatlaşdırılmış mətn yaratmaq üçün iOS sinfidir.
SpannableString Span obyektləri (ForegroundColorSpan, StyleSpan, URLSpan, UnderlineSpan) vasitəsilə mətn işarələməsi üçün Android sinfidir.
.ttf faylını layihəyə əlavə edin, Info.plist-də Fonts provided by application açarı altında göstərin, sonra UIFont(name:) istifadə edin.
.ttf faylını res/font/ qovluğuna yerləşdirin, XML şrift ailəsi yaradın və android:fontFamily göstərin və ya Typeface.createFromAsset() istifadə edin.
Kerninq simvol cütləri arasındakı boşluqdur. Liqaturalar hərf birləşmələri üçün xüsusi gliflərdir. Onlar NSKernAttributeName və NSLigatureAttributeName vasitəsilə idarə olunur.
Xülasə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.