Kami menggunakan font khusus dalam proyek kami. Ia bekerja dengan baik di Xcode 5. Dalam Xcode 6, ia bekerja dalam teks biasa, yang dikaitkan dengan string dalam kode. Tetapi string yang dikaitkan di storyboard semuanya kembali ke Helvetica saat berjalan di simulator atau perangkat, meskipun semuanya terlihat baik-baik saja di storyboard.
Saya tidak yakin apakah itu bug dari Xcode 6 atau iOS 8 SDK, atau cara menggunakan font khusus diubah di Xcode 6 / iOS 8?
Jawaban:
Perbaikan bagi saya adalah menggunakan
IBDesignable
kelas:Memberi Anda ini di Interface Builder:
Anda dapat mengatur atributedstring seperti biasa, tetapi Anda harus mengatur ukuran font dan fontfamily sekali lagi di properti baru yang tersedia.
Karena Interface Builder bekerja dengan font khusus secara default, ini menghasilkan apa yang Anda lihat adalah apa yang Anda dapatkan , yang saya lebih suka saat membangun aplikasi.
Catatan
Alasan saya menggunakan ini daripada hanya versi biasa adalah karena saya menyetel properti pada label yang diatribusikan seperti spasi, yang tidak tersedia saat menggunakan gaya biasa.
sumber
@IBInspectable
atribut untuk sementara, bukan font dan ukuran. Kami memilikimarkdownText
properti, karena sebagian besar waktu, kami menggunakan string yang dikaitkan untuk teks tebal atau bergaris bawah. Kemudian parsing teks penurunan harga menjadi string yang dikaitkan dengan font dan ukuran info yang disetel untuk teks biasa.Jawaban paling sederhana yang berhasil adalah menyeret font ke FontBook. Jika font ada di proyek Anda tetapi tidak ada di FontBook komputer Anda, IB terkadang kesulitan menemukannya. Aneh, tetapi telah berhasil untuk saya dalam beberapa kesempatan.
sumber
Anda dapat menambahkan font khusus ke buku font.
Langkah 1 : Klik kelola font. Ini membuka buku font.
Langkah2 : Klik plus dan tambahkan font Anda.
Lain kali ketika Anda mengklik font dengan teks yang diatribusikan, font yang baru ditambahkan juga akan ditampilkan dalam daftar. Tetapi pastikan font khusus Anda ditambahkan di info.plist dan sumber daya paket.
sumber
Berkat utas ini, saya sampai pada solusi ini:
sumber
Solusi saya adalah sedikit solusi. Solusi sebenarnya adalah apel memperbaiki Interface Builder.
Dengan itu Anda dapat menandai semua teks tebal dan miring di pembuat antarmuka menggunakan font sistem, kemudian pada waktu proses merender font kustom Anda. Mungkin tidak optimal di semua kasus.
Terinspirasi dari postingan ini
sumber
Saya telah berjuang dengan bug ini: UILabel ditampilkan dengan benar di IB dengan font khusus tetapi tidak ditampilkan dengan benar di perangkat atau simulator (font disertakan dalam proyek dan digunakan dalam UILabel biasa).
Akhirnya ditemukan Attributed String Creator di (Mac) App Store. Menghasilkan kode untuk ditempatkan di aplikasi Anda di tempat yang sesuai. Fantastis. Saya bukan pencipta, hanya pengguna yang bahagia.
sumber
Memenuhi masalah yang sama: font atribut yang disetel untuk TextView di storyboard tidak berfungsi dalam waktu proses dengan XCode 6.1 & iOS 8 SDK.
Beginilah cara saya memecahkan masalah ini, mungkin bisa menjadi solusi untuk Anda:
buka pemeriksa atribut textview Anda, ubah teks menjadi "Biasa"
klik di salib untuk menghapus "wC hR" (merah di bawah)
ubah teks menjadi "Diatributkan", lalu Anda dapat menyetel font dan ukuran teks Anda.
sumber
wC hR
set properti, tidakUILabel
jugaUITextView
.Memenuhi masalah yang sama: font atribut untuk UILabel di storyboard tidak berfungsi dalam waktu proses. Menggunakan UIFont + IBCustomFonts.m ini berfungsi untuk saya https://github.com/deni2s/IBCustomFonts
sumber
Coba ini akan berhasil
Dalam kasus saya ketika saya mencoba untuk mengatur "Teknologi Silversky" sebagai teks yang diatribusikan untuk label dari pembuat antarmuka itu tidak muncul ketika saya menjalankan simulator tetapi ditampilkan di pembuat antarmuka. Jadi saya menggunakan satu trik saya membuat font Silversky dengan 1 piksel lebih besar dari teks Teknologi.
Teks atribut memiliki masalah dengan ukuran font yang sama jadi ubah ukuran 1 kata hal ini bekerja dengan saya.
Mungkin ini adalah bug xcode tetapi trik ini berhasil untuk saya.
sumber
Masalah yang sama.
Dipecahkan: Cukup centang Selectable di TextView. Tanpa ini saya memiliki font Sistem standar.
sumber
Klik dua kali dan instal font ke sistem. Ini akan bekerja (Xcode 8.2)
sumber
Solusi @Hamidptb berfungsi, pastikan untuk mendapatkan nama font yang benar (setelah Anda menambahkannya ke Buku Font)
Buka aplikasi Buku Font, navigasikan ke font Anda lalu tekan Command + I. Nama PostScript adalah nama font yang ingin Anda gunakan di sini:
UILabel.appearance (). Font = UIFont (nama: " PostScriptName ", ukuran: 17)
sumber
Saya mencoba mendapatkan sel tableView dengan teks yang memiliki banyak paragraf. String yang diatribusikan tampaknya menjadi cara untuk mendapatkan spasi ekstra di antara paragraf (sesuatu yang terlihat sedikit lebih bagus daripada melakukan dua baris-feed dalam string). Menemukan ini dan posting lainnya ketika saya menemukan bahwa pengaturan IB tidak berlaku pada waktu proses ketika Anda ingin meletakkan teks yang berbeda di sel.
Hal utama yang saya temukan adalah menambahkan ekstensi ke String (menggunakan Swift) untuk membuat string yang dikaitkan dengan karakteristik tertentu. Contoh di sini menggunakan font Marker Felt, karena mudah dibedakan dari Helvetica. Contoh ini juga menunjukkan sedikit spasi ekstra di antara paragraf agar lebih berbeda satu sama lain.
Kemudian, di tableViewCell kustom saya, Anda mengirimkannya teks yang Anda inginkan dan mengubahnya menjadi string yang diatribusikan pada UILabel.
Dalam pengontrol tampilan dengan tableView, Anda harus mendaftarkan sel Anda di viewDidLoad () - Saya menggunakan ujung pena, jadi seperti ini:
Untuk mendapatkan sel untuk mengetahui seberapa tinggi seharusnya, buat sel prototipe yang digunakan untuk mendapatkan info ukuran, dan tidak pernah ditambahkan ke tableView. Jadi, dalam variabel pengontrol tampilan Anda:
Kemudian di (mungkin menimpa - bergantung pada pengontrol tampilan Anda) heightForRowAtIndexPath:
Pada kode di atas, prototypeCell akan diisi saat pertama kali dibutuhkan. PrototypeCell kemudian digunakan untuk mengetahui ketinggian sel setelah melalui proses autosizing. Anda perlu membulatkan ketinggian dengan fungsi ceil (). Saya juga menambahkan beberapa faktor fudge ekstra.
Bit kode terakhir adalah bagaimana Anda mengonfigurasi teks untuk sel. Untuk contoh ini, cukup:
Juga, ini bidikan ujung pena. Menyematkan label ke tepi sel (dengan margin yang diinginkan), tetapi menggunakan batasan "Lebih Besar Dari atau Sama dengan", dengan prioritas kurang dari "Wajib" untuk batasan bawah.
Setel font label ke Dikaitkan. Font IB sebenarnya tidak masalah.
Hasil dalam kasus ini:
sumber
Dalam hal string yang dikaitkan Anda dapat menambahkan font khusus dalam daftar font sebagai - Klik ikon font ini akan menampilkan dialog berikut. Dalam dialog berikut Anda dapat menambahkan kategori Anda sendiri atau yang sudah ada untuk font kustom. dialog font yang dikaitkan
Setelah itu klik Kelola Font, itu membuka kategori pilih dialog berikut di Anda buat atau yang sudah ada. Klik tanda + untuk menambahkan font dalam kategori. Kelola dialog font
sumber
itu memiliki penyelesaian yang sederhana dan cepat dan itu berhasil dalam kasus saya. solusi itu adalah menambahkan baris kode di didFinishLaunchingWithOptions func di file AppDelegate.swift:
untuk textView :
untuk label :
dan untuk UiView lainnya seperti ini ☝️
sumber
Untuk siapa pun yang menerapkan font khusus ke string yang diatribusikan dalam kode: Coba setel di
viewDidLayoutSubviews
. Kesalahan saya melakukannyaviewDidLoad
, tidak akan diterapkan di sana.sumber