UITextView'da kenar boşluğu / dolgu nasıl kaybedilir?


486

Bir var UITextViewmetnin büyük miktarda görüntüler iOS Uygulaması, içinde.

Sonra bu metni ofset kenar boşluğu parametresini kullanarak disk belleği UITextView.

Benim sorunum dolgu UITextView, kullandığım yazı tipi boyutu ve yazı tipine bağlı olarak farklı gibi görünüyor benim hesaplamaları kafa karıştırıyor.

Bu nedenle, soruyu: Bu içeriğini çevreleyen dolguyu kaldırmak mümkün mü UITextView?

Yanıtlarınızı duymayı dört gözle bekleyin!


9
Bu KG'nin neredeyse on yaşında olduğunu unutmayın! İOS'taki en aptal sorunlardan biri olduğu için 100.000'den fazla görüntüleme ile . Sadece FTR Mevcut, 2017, makul bir şekilde basit / olağan / kabul edilen çözümü bir cevap olarak koydum.
Mart'ta Fattie

1
Bu konuda hala güncellemeler alıyorum, 2009 yılında IOS 3.0'ın piyasaya sürüldüğü bir sabit kod geçici çözümü yazdım. Cevabınızı, yılların eski olduğunu açıkça belirtmek ve kabul edilen durumu göz ardı etmek için düzenledim.
Michael

Yanıtlar:


383

2019 için güncel

İOS'taki en sinsi hatalardan biridir.

Burada verilen sınıf, UITextViewFixedgenel olarak en makul çözümdür.

İşte sınıf:

@IBDesignable class UITextViewFixed: UITextView {
    override func layoutSubviews() {
        super.layoutSubviews()
        setup()
    }
    func setup() {
        textContainerInset = UIEdgeInsets.zero
        textContainer.lineFragmentPadding = 0
    }
}

Inspector'da scrollEnabled özelliğini kapatmayı unutmayın!

  1. Çözüm film şeridinde düzgün çalışıyor

  2. Çözüm çalışma zamanında düzgün çalışıyor

Hepsi bu, bitti.

Genel olarak, çoğu durumda ihtiyacınız olan her şey bu olmalıdır .

Metin görünümünün yüksekliğini anında değiştirseniz bile , UITextViewFixedgenellikle ihtiyacınız olan her şeyi yapar.

(Anında yüksekliği değiştirmenin yaygın bir örneği, kullanıcı yazarken bunu değiştirmektir.)

İşte Apple'dan kırık UITextView ...

UITextView ile IB ekran görüntüsü

İşte UITextViewFixed:

UITextViewFixed ile IB ekran görüntüsü

Tabii ki

scroll'i kapat Müfettiş'te etkin!

ScrollEnabled'ı kapatmayı unutmayın! :)


Bazı sorunlar

(1) Bazı olağandışı durumlarda - örneğin, esnek, dinamik olarak değişen hücre yüksekliklerine sahip bazı tablolar - Apple tuhaf bir şey yapar: En altta ekstra alan ekler . Hayır, gerçekten! Bu, iOS'taki en sinir bozucu şeylerden biri olmalı.

Burada, genellikle bu deliliğe yardımcı olan yukarıdakilere eklemek için bir "hızlı düzeltme" bulunmaktadır.

...
        textContainerInset = UIEdgeInsets.zero
        textContainer.lineFragmentPadding = 0

        // this is not ideal, but you can sometimes use this
        // to fix the "extra space at the bottom" insanity
        var b = bounds
        let h = sizeThatFits(CGSize(
           width: bounds.size.width,
           height: CGFloat.greatestFiniteMagnitude)
       ).height
       b.size.height = h
       bounds = b
 ...

(2) Bazen, başka bir ince Apple dağınıklığını düzeltmek için şunu eklemeniz gerekir:

override func setContentOffset(_ contentOffset: CGPoint, animated: Bool) {
    super.setContentOffset(contentOffset, animated: false)
}

(3) Tartışmalı olarak şunu eklemeliyiz :

contentInset = UIEdgeInsets.zero

hemen sonra .lineFragmentPadding = 0içinde UITextViewFixed.

Ancak ... inanın ya da inanmayın ... sadece mevcut iOS'ta çalışmıyor ! (2019'da kontrol edildi.) Gelecekte bu satırı eklemek gerekebilir.

UITextViewİOS'ta kırılmış olması, tüm mobil bilgisayarlardaki en garip şeylerden biridir. Bu sorunun on yıllık yıldönümü ve hala sabit değil!

Son olarak, Metin Alanı için biraz benzer bir ipucu : https://stackoverflow.com/a/43099816/294884

Tamamen rastgele ipucu: ucuna "..." nasıl eklenir

Genellikle "UILabel gibi" bir UITextView kullanıyorsunuz. Yani bir üç nokta "..." kullanarak metni kısaltmasını istiyorsunuz

Öyleyse, "kurulum" a üçüncü bir kod satırı ekleyin:

 textContainer.lineBreakMode = .byTruncatingTail

Sıfır yükseklik istiyorsanız pratik ipucu, ne zaman, hiç metin yok

Genellikle yalnızca metin görüntülemek için bir metin görünümü kullanırsınız. Dolayısıyla, kullanıcı aslında hiçbir şeyi düzenleyemez. Metin görünümünün kaç metin satırı olduğuna bağlı olarak yüksekliği otomatik olarak değiştireceği anlamına gelen "0" satırlarını kullanırsınız.

Bu harika, ama hiç metin yoksa, ne yazık ki bir metin satırı varmış gibi aynı yükseklikte olsun !! Metin görünümü hiçbir zaman "kaybolmaz".

resim açıklamasını buraya girin

"Uzaklaşmasını" istiyorsanız, şunu ekleyin:

override var intrinsicContentSize: CGSize {
    var i = super.intrinsicContentSize
    print("for \(text) size will be \(i)")
    if text == "" { i.height = 1.0 }
    print("   but we changed it to \(i)")
    return i
}

resim açıklamasını buraya girin

('1' yaptım, bu yüzden neler olduğu açık, '0' iyi.)

UILabel ne olacak?

Yalnızca metin görüntülerken, UILabel'in UITextView'a göre birçok avantajı vardır. UILabel, bu KG sayfasında açıklanan sorunlardan muzdarip değildir. Gerçekten de hepimizin genellikle "vazgeçmek" ve sadece UITextView kullanmak nedeni UILabel ile çalışmak zor olmasıdır. Özellikle UILabel'e doğru şekilde dolgu eklemek gülünç derecede zordur . Aslında, burada UILabel'e "son" doğru dolgu eklemek hakkında tam bir tartışma var: https://stackoverflow.com/a/58876988/294884 Bazı durumlarda dinamik yükseklik hücreleriyle zor bir düzen yapıyorsanız, bazen UILabel ile zor yoldan yapmak daha iyi.


1
self.textView.isScrollEnabled = falseiçeride yaptım viewDidLayoutSubviews()ve bu da çalıştı. Apple sadece çemberlerden
atlamamızı

1
Dinamik yükseklikte (UITableViewAutomaticDimension) UITableView Hücrelerim, Üstbilgi ve Altbilgimdeki tüm absürt UITextView otomatik yerleşim hatalarını düzeltmek için en iyi çözüm. Harika!
Peter Kreinz

1
@ Fattie'nin cevabına, etkinleştirme / devre dışı bırakma özel hilesini kullanarak tüm eklerden gerçekten kurtulmama yardımcı olan güncellenmiş bir cevap gönderdim translatesAutoresizingMaskIntoConstraints. Sadece bu cevapla, otomatik düzen kullanarak bir görünüm hiyerarşisinde tüm kenar boşluklarını (bazı tuhaf alt kenar boşlukları gitmeye dirençli) kaldıramıyordum. Ayrıca systemLayoutSizeFitting, daha önce buggy nedeniyle geçersiz bir boyut döndüren görüntüleme boyutlarının hesaplanmasıyla UITextView
ilgilenir

1
IBDesignable için 1up. Sadece yapabilseydim, çok iyi seçilmiş yer tutucu metni için de oy verdim
Toastor

1
Tabloda metin görünümlerim vardı, tek satırlık metinler yüksekliğini doğru hesaplamamıştı (otomatik yerleşim). Bunu düzeltmek için didMoveToSuperview geçersiz kılmak ve orada da kurulum çağırmak zorunda kaldı.
El Horrible

791

İOS 7.0 için, contentInset numarasının artık çalışmadığını gördüm. Bu, iOS 7'deki kenar boşluğundan / dolgudan kurtulmak için kullandığım kod.

Bu, metnin sol kenarını kabın sol kenarına getirir:

textView.textContainer.lineFragmentPadding = 0

Bu, metnin üst kısmının kabın üst kısmıyla hizalanmasına neden olur

textView.textContainerInset = .zero

Kenar boşluğunu / dolguyu tamamen çıkarmak için her iki Satır da gereklidir.


2
Bu benim için iki satır için çalışıyor, ancak 5 satıra ulaştığımda metin kesiliyor.
livings124

7
İkinci satırın şu şekilde de yazılabileceğini unutmayın: self.descriptionTextView.textContainerInset = UIEdgeInsetsZero;
jessepinho

19
lineFragmentPadding0 olarak ayarlamak , aradığım sihirdi. Apple'ın diğer denetimlerle UITextView içeriğini sıralamayı zorlaştırdığı hakkında hiçbir fikrim yok.
phatmann

3
Bu doğru cevap. Bu çözümde yatay kaydırma yapılmaz.
Michael

2
lineFragmentPadding, kenar boşluklarını değiştirmek için tasarlanmamıştır. Gönderen docs Çizgi parçası dolgu metin marjlarını ifade etmek tasarlanmamıştır. Bunun yerine, metin görünümünüzde ekler kullanmalı, paragraf kenar boşluğu niteliklerini ayarlamalı veya metin görünümünün denetimindeki konumunu değiştirmelisiniz.
Martin Berger

256

Bu geçici çözüm, IOS 3.0 yayımlandığında 2009 yılında yazılmıştır. Artık geçerli değil.

Aynı problemle karşılaştım, sonunda kullanmak zorunda kaldım

nameField.contentInset = UIEdgeInsetsMake(-4,-8,0,0);

burada nameField bir UITextView. Kullanmakta olduğum yazı tipi Helvetica 16 punto idi. Bu çizdiğim alan boyutu için özel bir çözüm. Bu, sol ofseti sol tarafla aynı hizada yapar ve üst ofseti kutuya çekmek için istediğim yerde yapar.

Ayrıca, bu yalnızca UITextViewsvarsayılan hizalamayı kullandığınız yer için de geçerlidir .

nameField.textAlignment = NSTextAlignmentLeft;

Örneğin sağa hizalayın UIEdgeInsetsMakeve sağ kenar üzerinde hiçbir etkisi yok gibi görünüyor.

En azından .contentInset özelliğini kullanmak, alanlarınızı "doğru" konumlara yerleştirmenize ve sapmalarınızı dengelemeden uyumlamanıza olanak tanır UITextViews.


1
Evet, iOS 7'de çalışıyor. UIEdgeInset'in doğru değerlere ayarlandığından emin olun. UIEdgeInsetsMake'den (-4, -8,0,0) farklı olabilir.
app_

15
IOS 7'de en iyi sonucu UIEdgeInsetsMake (0, -4,0, -4) buldum.
Racura

2
Evet, bunlar örnek sayılar. "Bu çizdiğim alan büyüklüğü için özel bir çözüm" dedim. Temelde, benzersiz düzen durumunuz için rakamlarla oynamak zorunda olduğunuzu göstermeye çalışıyordum.
Michael

3
UITextAlignmentLeft, iOS 7'de kullanımdan kaldırıldı. NSTextAlignmentLeft kullanın.
Jordi Kroon

7
İnsanların neden sabit kodlanmış değerleri kullanan bir cevabı iptal ettiklerini anlamıyorum. İOS'un gelecekteki sürümlerinde kırılması ÇOK olasıdır ve sadece düz bir kötü fikirdir.
ldoogy

77

Halihazırda verilen iyi yanıtlardan bazılarını temel alan, burada iOS 7.0 ve sonraki sürümlerinde çalışan tamamen Storyboard / Arayüz Oluşturucu tabanlı bir çözüm var

Aşağıdaki anahtarlar için UITextView Kullanıcı Tanımlı Çalışma Zamanı Özniteliklerini ayarlayın :

textContainer.lineFragmentPadding
textContainerInset

Arayüz Oluşturucu


4
Bu özellikle de sadece XIB çözümüne ihtiyacınız varsa en iyi yanıttır
yano

16
Kopyala / yapıştır: textContainer.lineFragmentPadding | textContainerInset
Luca De Angelis

3
Güzel bir cevap veren budur - 3 yıl sonra bile kolay ve iyi çalışır :)
Shai Mishali

46

İOS 5'de UIEdgeInsetsMake(-8,-8,-8,-8);harika çalışıyor gibi görünüyor.


41

Gerçek kenar boşlukları kullanıcı yazı tipi boyutu ayarları vb. İle değişebileceğinden, sabit kodlanmış değerleri içeren tüm yanıtlardan kesinlikle kaçınırım.

İşte @ user1687195 yanıtını, değiştirmeden yazılmıştır textContainer.lineFragmentPadding(çünkü dokümanlar bunun amaçlanan kullanım olmadığını belirtir ).

Bu iOS 7 ve üstü için harika çalışıyor.

self.textView.textContainerInset = UIEdgeInsetsMake(
                                      0, 
                                      -self.textView.textContainer.lineFragmentPadding, 
                                      0, 
                                      -self.textView.textContainer.lineFragmentPadding);

Bu aynı sonuç, lineFragmentPadding özelliğini kötüye kullanmaması nedeniyle biraz daha temiz.


Bu cevaba dayanan başka bir çözüm denedim ve harika çalışıyor. Çözümler:self.textView.textContainer.lineFragmentPadding = 0;
Bakyt Abdrasulov

1
@BakytAbdrasulov lütfen cevabımı okuyun. Çözümünüz çalışırken, dokümanlara uygun değildir (cevabımdaki bağlantıya bakın). lineFragmentPaddingmarjları kontrol etmek anlamına gelmez. Bu yüzden kullanman gerekiyor textContainerInset.
ldoogy

20

Kullanıcı Tanımlı Çalışma Zamanı Özniteliklerini kullanan film şeridi veya Arayüz Oluşturucu çözümü :

Ekran görüntüleri iOS 7.1 ve iOS 6.1 ile contentInset = {{-10, -5}, {0, 0}}.

Kullanıcı Tanımlı Çalışma Zamanı Özellikleri

çıktı


1
İOS 7'de benim için çalıştı.
Kubilay

Sadece kullanıcı tanımlı çalışma zamanı özellikleri için - harika!
hris.

16

Tüm bu cevaplar başlık sorusunu ele alıyor, ancak OP sorusunun gövdesinde sunulan sorunlara bazı çözümler önermek istedim.

Metin İçeriğinin Boyutu

İçindeki metnin boyutunu hesaplamak için hızlı bir yolu UITextViewkullanmaktır NSLayoutManager:

UITextView *textView;
CGSize textSize = [textView usedRectForTextContainer:textView.textContainer].size;

Bu, UITextViewçerçevesinden daha büyük olabilecek toplam kaydırılabilir içeriği verir . Bunu textView.contentSize, metnin ne kadar yer kapladığını hesapladığından çok daha doğru buldum . Örneğin, boş bir değer verildiğinde UITextView:

textView.frame.size = (width=246, height=50)
textSize = (width=10, height=16.701999999999998)
textView.contentSize = (width=246, height=33)
textView.textContainerInset = (top=8, left=0, bottom=8, right=0)

Satır yüksekliği

UIFont, verilen yazı tipi için satır yüksekliğini hızlı bir şekilde almanızı sağlayan bir özelliğe sahiptir. Böylece metninizin satır yüksekliğini UITextViewşununla hızlı bir şekilde bulabilirsiniz :

UITextView *textView;
CGFloat lineHeight = textView.font.lineHeight;

Görünür Metin Boyutunu Hesaplama

Gerçekten görünür olan metin miktarını belirlemek, "sayfalama" efektini işlemek için önemlidir. gerçekte metnin kendisi arasında bir kenar boşluğu UITextViewadı verilen bir özelliğe sahiptir . Görünür çerçevenin gerçek yüksekliğini hesaplamak için aşağıdaki hesaplamaları yapabilirsiniz:textContainerInsetUITextView.frame

UITextView *textView;
CGFloat textViewHeight = textView.frame.size.height;
UIEdgeInsets textInsets = textView.textContainerInset;
CGFloat textHeight = textViewHeight - textInsets.top - textInsets.bottom;

Çağrı Boyutunun Belirlenmesi

Son olarak, şimdi görünür metin boyutu ve içeriğe sahip olduğunu, hızla uzaklıklar çıkarılarak ne olması gerektiğini belirleyebilir textHeightdan textSize:

// where n is the page number you want
CGFloat pageOffsetY = textSize - textHeight * (n - 1);
textView.contentOffset = CGPointMake(textView.contentOffset.x, pageOffsetY);

// examples
CGFloat page1Offset = 0;
CGFloat page2Offset = textSize - textHeight
CGFloat page3Offset = textSize - textHeight * 2

Tüm bu yöntemleri kullanarak, metinlerime dokunmadım ve düzeltme işaretine veya istediğim metnin herhangi bir yerine gidebildim.


12

Kullanabileceğiniz textContainerInsetözelliği UITextView:

textView.textContainerInset = UIEdgeInsetsMake (10, 10, 10, 10);

(üst sol alt sağ)


1
Bunun neden en iyi cevap olarak atanmadığını merak ediyorum. TextContainerInset ihtiyaçlarımı gerçekten karşıladı.
KoreanXcodeWorker

textContainerInsetYeni bir değere değiştirmek istediğimde , mülkün alt değerini güncellemek benim için çalışmıyor; bkz. Stackoverflow.com/questions/19422578/… .
Evan R

@MaggiePhillips En iyi yanıt bu değildir çünkü sabit kodlanmış değerler bunu yapmanın doğru yolu olamaz ve bazı durumlarda başarısız olacağı garanti edilir. LineFragmentPadding öğesini dikkate almanız gerekir.
ldoogy

11

İOS 10 için, aşağıdaki satır üst ve alt dolguların kaldırılması için çalışır.

captionTextView.textContainerInset = UIEdgeInsetsMake(0, 0, 0, 0)

Xcode 8.2.1. hala bu cevapta belirtilenle aynı konu. Benim çözümüm değerleri UIEdgeInsets (üst: 0, sol: -4.0, alt: 0, sağ: -4.0) olarak düzenlemekti.
Darkwonder

UIEdgeInset.zeroXCode 8.3 ve iOS 10.3 Simulator kullanarak çalışır
Simon Warta

10

Son Swift:

self.textView.textContainerInset = .init(top: -2, left: 0, bottom: 0, right: 0)
self.textView.textContainer.lineFragmentPadding = 0

Mükemmel cevap. Bu yanıt, ek Üst eki kaldırır. textView.textContainerInset = UIEdgeInsets.zero, üst metin satırından 2 pikseli kaldırmaz.
korgx9

10

İşte Fattie'nin çok yararlı cevabının güncellenmiş bir versiyonu. İOS 10 ve 11'de (ve muhtemelen daha düşük olanlarda da) düzeni almama yardımcı olan 2 önemli satır ekliyor:

@IBDesignable class UITextViewFixed: UITextView {
    override func layoutSubviews() {
        super.layoutSubviews()
        setup()
    }
    func setup() {
        translatesAutoresizingMaskIntoConstraints = true
        textContainerInset = UIEdgeInsets.zero
        textContainer.lineFragmentPadding = 0
        translatesAutoresizingMaskIntoConstraints = false
    }
}

Önemli çizgiler iki translatesAutoresizingMaskIntoConstraints = <true/false>ifadedir!

Bu , tüm koşullardaki tüm marjları şaşırtıcı bir şekilde ortadan kaldırıyor !

İken textViewilk savunan değil o kullanılarak çözülemeyeceğini bazı garip alt kenar boşluğu olduğunu olabilirdi sizeThatFitskabul cevap belirtilen yöntem.

TextView'e dokunduğunuzda aniden garip alt kenar boşluğu kayboldu ve her şey olması gerektiği gibi görünüyordu, ancak sadece textView var olur olmaz firstResponder.

Bu yüzden buradatranslatesAutoresizingMaskIntoConstraints , aramalar arasında çerçeve / sınırları manuel olarak ayarlarken etkinleştirmenin ve devre dışı bırakmanın yardımcı olduğunu SO'da okudum .

Neyse ki bu sadece çerçeve ayarı ile değil, aynı setup()zamanda iki translatesAutoresizingMaskIntoConstraintsçağrı arasında sandviç 2 satır ile çalışır !

Bu, örneğin bir çok yararlı bir görünüm çerçevesi hesaplanırken kullanılarak systemLayoutSizeFittingbir ileUIView . Doğru boyutu geri verir (daha önce yapmadı)!

Belirtilen orijinal cevapta olduğu gibi:
Müfettiş'te scrollEnabled öğesini kapatmayı unutmayın!
Bu çözüm film şeridinde ve çalışma zamanında düzgün çalışır.

İşte bu, şimdi gerçekten bitti!


5

Hızlı 4, Xcode 9 için

Aşağıdaki işlevi kullanın UITextView içindeki metnin kenar boşluğunu / dolgusunu değiştirebilir

public func UIEdgeInsetsMake (_ üst: CGFloat, _ sol: CGFloat, _ alt: CGFloat, _ sağ: CGFloat) -> UIEdgeInsets

yani bu durumda

 self.textView?.textContainerInset = UIEdgeInsetsMake(0, 0, 0, 0)

3

Ankastre çözeltiyi yaparken hala sağ ve altta dolgu vardı. Ayrıca metin hizalaması da sorunlara neden oluyordu. Bulduğum tek ateş yolu, metin görünümünü sınırlara kırpılmış başka bir görünümün içine koymaktı.


3

İşte Apple'ın varsayılan kenar boşluğunu uygulamanızdaki her metin görünümünden kaldıracak kolay küçük bir uzantı.

Not: Interface Builder hala eski kenar boşluğunu gösterecektir, ancak uygulamanız beklendiği gibi çalışacaktır.

extension UITextView {

   open override func awakeFromNib() {
      super.awakeFromNib();
      removeMargins();
   }

   /** Removes the Apple textview margins. */
   public func removeMargins() {
      self.contentInset = UIEdgeInsetsMake(
         0, -textContainer.lineFragmentPadding,
         0, -textContainer.lineFragmentPadding);
   }
}

1

Benim için (iOS 11 ve Xcode 9.4.1) sihirli bir şekilde işe yarayan, textView.font özelliğini UIFont.preferred(forTextStyle:UIFontTextStyle) stile ve @Fattie tarafından belirtildiği gibi ilk yanıtı ayarlamaktı. Ancak textView.font özelliğini ayarlayana kadar @Fattie yanıtı çalışmadı, başka UITextView düzensiz davranmaya devam ediyor.


1

En son Swift sürümünü arayan herkes aşağıdaki kod Xcode 10.2 ve Swift 4.2 ile iyi çalışıyor

yourTextView.textContainerInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)

0

Bir yaklaşım daha buldum, UITextView alt görüntülerinden metin ile görüntüleme ve bir alt sınıfın layoutSubview yönteminde ayarlama:

- (void)layoutSubviews {
    [super layoutSubviews];

    const int textViewIndex = 1;
    UIView *textView = [self.subviews objectAtIndex:textViewIndex];
    textView.frame = CGRectMake(
                                 kStatusViewContentOffset,
                                 0.0f,
                                 self.bounds.size.width - (2.0f * kStatusViewContentOffset),
                                 self.bounds.size.height - kStatusViewContentOffset);
}

0

TextView kaydırma ayrıca metnin konumunu etkiler ve dikey olarak ortalanmamış gibi görünmesini sağlar. Kaydırmayı devre dışı bırakıp üst iç metni 0 olarak ayarlayarak metni görünümde ortalamayı başardım:

    textView.scrollEnabled = NO;
    textView.textContainerInset = UIEdgeInsetsMake(0, textView.textContainerInset.left, textView.textContainerInset.bottom, textView.textContainerInset.right);

Bazı nedenlerden dolayı henüz çözemedim, imleç yazmaya başlamadan önce hala ortalanmamış, ancak yazmaya başladığımda metin hemen ortalanıyor.


0

Bir HTML dizesi ayarlamak ve alt dolguyu kullanmak istemiyorsanız, lütfen blok etiketleri (div, p) kullanmadığınızdan emin olun.

Benim durumumda sebebi buydu. Blok etiketlerin oluşumlarını örneğin span etiketi ile değiştirerek kolayca test edebilirsiniz.


0

SwiftUI için

Kendi TextView'inizi kullanarak UIViewRepresentableve dolguyu kontrol etmek istiyorsanız, makeUIViewişlevinizde şunları yapın:

uiTextView.textContainerInset = UIEdgeInsets(top: 10, left: 18, bottom: 0, right: 18)

ya da ne istersen.


-4
[firstNameTextField setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter];
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.