Come impostare l'allineamento in alto a sinistra per l'applicazione UILabel per iOS?


99

Ho aggiunto un'etichetta nel mio file pennino, quindi è necessario che abbia l'allineamento in alto a sinistra per quell'etichetta. Dato che sto fornendo testo in fase di esecuzione, non è sicuro di quante righe ci siano. Quindi, se il testo contiene solo una riga, appare allineato verticalmente al centro. Quell'allineamento non corrisponde alla mia rispettiva etichetta di fronte ad esso.

Per esempio:

inserisci qui la descrizione dell'immagine

Che sembra strano :(

C'è un modo in cui posso impostare il testo dell'etichetta corretto per l'allineamento in alto a sinistra?


Risposte:



64

È abbastanza facile da fare. Crea una UILabelsottoclasse con una verticalAlignmentproprietà e sostituisci textRectForBounds:limitedToNumberOfLinesper restituire i limiti corretti per un allineamento verticale superiore, centrale o inferiore. Ecco il codice:

SOLabel.h

#import <UIKit/UIKit.h>

typedef enum
{
    VerticalAlignmentTop = 0, // default
    VerticalAlignmentMiddle,
    VerticalAlignmentBottom,
} VerticalAlignment;

@interface SOLabel : UILabel

   @property (nonatomic, readwrite) VerticalAlignment verticalAlignment;

@end

SOLabel.m

@implementation SOLabel

-(id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (!self) return nil;

    // set inital value via IVAR so the setter isn't called
    _verticalAlignment = VerticalAlignmentTop;

    return self;
}

-(VerticalAlignment) verticalAlignment
{
    return _verticalAlignment;
}

-(void) setVerticalAlignment:(VerticalAlignment)value
{
    _verticalAlignment = value;
    [self setNeedsDisplay];
}

// align text block according to vertical alignment settings
-(CGRect)textRectForBounds:(CGRect)bounds 
    limitedToNumberOfLines:(NSInteger)numberOfLines
{
   CGRect rect = [super textRectForBounds:bounds 
                   limitedToNumberOfLines:numberOfLines];
    CGRect result;
    switch (_verticalAlignment)
    {
       case VerticalAlignmentTop:
          result = CGRectMake(bounds.origin.x, bounds.origin.y, 
                              rect.size.width, rect.size.height);
           break;

       case VerticalAlignmentMiddle:
          result = CGRectMake(bounds.origin.x, 
                    bounds.origin.y + (bounds.size.height - rect.size.height) / 2,
                    rect.size.width, rect.size.height);
          break;

       case VerticalAlignmentBottom:
          result = CGRectMake(bounds.origin.x, 
                    bounds.origin.y + (bounds.size.height - rect.size.height),
                    rect.size.width, rect.size.height);
          break;

       default:
          result = bounds;
          break;
    }
    return result;
}

-(void)drawTextInRect:(CGRect)rect
{
    CGRect r = [self textRectForBounds:rect 
                limitedToNumberOfLines:self.numberOfLines];
    [super drawTextInRect:r];
}

@end

3
Ho anche provato molte altre soluzioni qui su SO prima di imbattermi in questa. Ha funzionato perfettamente! Tieni presente che se lo stai facendo in StoryBoard, assicurati di impostare l'attributo CustomClass su SOLabel (o qualsiasi altra cosa tu decida di chiamarlo) invece di UILabel (nell'ispettore delle utilità).
TMc

Questo è molto utile, grazie. Non funziona per il testo allineato al centro oa destra, ma l'uso bounds.size.widthinvece di rect.size.widthin textRectForBounds:limitedToNumberOfLines:sembra risolverlo.
Geoff Hackworth

1
Se hai incontrato "Thread 1: EXC_BAD_ACCESS (Code 2, address = 0x ...)" in iOS 9 Xcode 7, rimuovi semplicemente il setter e il getter - (VerticalAlignment) verticalAlignment; e - (void) setVerticalAlignment: (VerticalAlignment) funzioni di valore, poiché la variabile è @property. È sintetizzato e contiene funzioni di accesso.
felixwcf

ho fatto alcuni emendamenti qui nel metodo: "textRectForBounds" - risultato = CGRectMake (rect.origin.x, bounds.origin.y, rect.size.width, rect.size.height); Per rendere i miei lavori per rightAlignment UILable.
g212gs

50

Ho trovato una soluzione utilizzando AutoLayout in StoryBoard.

1) Imposta il numero di righe su 0 e l'allineamento del testo su Sinistra.

inserisci qui la descrizione dell'immagine

2) Impostare il vincolo di altezza.

inserisci qui la descrizione dell'immagine

3) Il vincolo di altezza dovrebbe essere in relazione: minore o uguale

inserisci qui la descrizione dell'immagine

4)

   override func viewWillLayoutSubviews() {
        sampleLabel.sizeToFit()
    }

Ho ottenuto il risultato come segue:

inserisci qui la descrizione dell'immagine


2
Funziona come un fascino, anche in un UITableViewCell con riutilizzo.
alex.bour

Metti il viewWillLayoutSubviewsnel controller o il file della cella? Se il controller, come accede alla UILabel dalla cella?
Craig.Pearce

Dove metti il ​​passaggio 4? Come nuovo utente, ero entusiasta di avere una soluzione puramente UI, poi quel codice viene fuori dal nulla e non ci viene detto dove metterlo
velkoon

O su SampleClass.swift o SampleTableViewCell.swift
AG

Questa dovrebbe essere la soluzione. Funziona perfettamente, non è richiesto alcun hack o sottoclasse.
Curioso101

44

Il SOLabel funziona per me.

Swift 3 e 5:

Questa versione è stata aggiornata dall'originale per consentire il supporto per le lingue RTL:

public class VerticalAlignLabel: UILabel {
    enum VerticalAlignment {
        case top
        case middle
        case bottom
    }

    var verticalAlignment : VerticalAlignment = .top {
        didSet {
            setNeedsDisplay()
        }
    }

    override public func textRect(forBounds bounds: CGRect, limitedToNumberOfLines: Int) -> CGRect {
        let rect = super.textRect(forBounds: bounds, limitedToNumberOfLines: limitedToNumberOfLines)

        if UIView.userInterfaceLayoutDirection(for: .unspecified) == .rightToLeft {
            switch verticalAlignment {
            case .top:
                return CGRect(x: self.bounds.size.width - rect.size.width, y: bounds.origin.y, width: rect.size.width, height: rect.size.height)
            case .middle:
                return CGRect(x: self.bounds.size.width - rect.size.width, y: bounds.origin.y + (bounds.size.height - rect.size.height) / 2, width: rect.size.width, height: rect.size.height)
            case .bottom:
                return CGRect(x: self.bounds.size.width - rect.size.width, y: bounds.origin.y + (bounds.size.height - rect.size.height), width: rect.size.width, height: rect.size.height)
            }
        } else {
            switch verticalAlignment {
            case .top:
                return CGRect(x: bounds.origin.x, y: bounds.origin.y, width: rect.size.width, height: rect.size.height)
            case .middle:
                return CGRect(x: bounds.origin.x, y: bounds.origin.y + (bounds.size.height - rect.size.height) / 2, width: rect.size.width, height: rect.size.height)
            case .bottom:
                return CGRect(x: bounds.origin.x, y: bounds.origin.y + (bounds.size.height - rect.size.height), width: rect.size.width, height: rect.size.height)
            }
        }
    }

    override public func drawText(in rect: CGRect) {
        let r = self.textRect(forBounds: rect, limitedToNumberOfLines: self.numberOfLines)
        super.drawText(in: r)
    }
}

Swift 1:

class UIVerticalAlignLabel: UILabel {

enum VerticalAlignment : Int {
    case VerticalAlignmentTop = 0
    case VerticalAlignmentMiddle = 1
    case VerticalAlignmentBottom = 2
}

var verticalAlignment : VerticalAlignment = .VerticalAlignmentTop {
    didSet {
        setNeedsDisplay()
    }
}

required init(coder aDecoder: NSCoder){
    super.init(coder: aDecoder)
}

override func textRectForBounds(bounds: CGRect, limitedToNumberOfLines: Int) -> CGRect {
    let rect = super.textRectForBounds(bounds, limitedToNumberOfLines: limitedToNumberOfLines)

    switch(verticalAlignment) {
        case .VerticalAlignmentTop:
            return CGRectMake(bounds.origin.x, bounds.origin.y, rect.size.width, rect.size.height)
        case .VerticalAlignmentMiddle:
            return CGRectMake(bounds.origin.x, bounds.origin.y + (bounds.size.height - rect.size.height) / 2, rect.size.width, rect.size.height)
        case .VerticalAlignmentBottom:
            return CGRectMake(bounds.origin.x, bounds.origin.y + (bounds.size.height - rect.size.height), rect.size.width, rect.size.height)
        default:
            return bounds
    }
}

override func drawTextInRect(rect: CGRect) {
    let r = self.textRectForBounds(rect, limitedToNumberOfLines: self.numberOfLines)
    super.drawTextInRect(r)
    }
}

Se provo a creare un'etichetta usando questo codice: var myLabel = VerticalAlignLabel () ottengo un "argomento mancante per il parametro 'coder' nella chiamata". Come posso creare un'etichetta utilizzando questa sottoclasse VerticalAlignLabel?
RanLearns

1
Prova subito la versione 3 di Swift: avevo un init richiesto che non è necessario.
totiG

14

Nel mio caso, è stata una bottom spacequestione di vincoli. L'avevo impostato= 16 .

Quando l'ho impostato su bottom to >= 16 , questo problema è stato risolto.

Inoltre, se nell'etichetta è presente un vincolo di altezza, è necessario rimuoverlo.

Ecco la vista dei vincoli della mia etichetta nell'ispettore dimensioni:

vincolo


Non ho opzioni di vincolo quando seleziono un'etichetta.
velkoon

Soluzione più semplice: lascia che i vincoli e il layout automatico se ne occupino. Grazie!
Jason

13

Nel tuo codice

label.text = @"some text";
[label sizeToFit];

Fai attenzione che se lo usi nelle celle della tabella o in altre visualizzazioni che vengono riciclate con dati diversi, dovrai memorizzare il frame originale da qualche parte e ripristinarlo prima di chiamare sizeToFit.


A questo punto, consiglierei di lasciare tutto all'Autolayout. Questo non è più necessario.
n13

9

Ho trovato un'altra soluzione per lo stesso problema. Ho usato UITextViewinvece di UILabele ho cambiato la editable()funzione in false.


@geekyaleks Perché è un trucco stupido? Sembra una soluzione alternativa decente, ci sono altri problemi con esso oltre a non essere una risposta diretta alla domanda?
Christopher Larsen

Non è appropriato, perché non stai utilizzando il componente UI appropriato per il lavoro. NON dovrebbe essere un compromesso per qualcosa di semplice come l'allineamento verticale. È necessario utilizzare il componente giusto per il lavoro. Qualsiasi altra cosa è un hack ...
geekyaleks

7

Avevo anche questo problema, ma quello che ho trovato è stato l'ordine in cui imposti le proprietà ei metodi di UILabel!

Se chiami [label sizeToFit]prima, label.font = [UIFont fontWithName:@"Helvetica" size:14];il testo non si allinea in alto, ma se li scambi, lo fa!

Ho anche notato che impostare prima il testo fa la differenza.

Spero che questo ti aiuti.


Grande. sizeToFit () dovrebbe essere chiamato all'ultimo.
MKatleast3

4

Dato che stai utilizzando il generatore di interfacce, imposta i vincoli per la tua etichetta (assicurati di impostare anche l'altezza e la larghezza). Quindi, in Impostazioni dimensioni, controlla l'altezza dell'etichetta. Lì vorrai che legga> = invece di =. Quindi, nell'implementazione per quel controller di visualizzazione, impostare il numero di righe su 0 (può essere fatto anche in IB) e impostare l'etichetta [label sizeToFit]; e man mano che il testo aumenta di lunghezza, l'etichetta aumenterà di altezza e manterrà il testo in alto a sinistra.


4

Se ciò di cui hai bisogno è un testo non modificabile che per impostazione predefinita inizia nell'angolo in alto a sinistra, puoi semplicemente utilizzare una vista testo invece di un'etichetta e quindi impostare il suo stato su non modificabile, in questo modo:

textview.isEditable = false

Molto più facile che scherzare con le etichette ...

Saluti!


3

La soluzione con SoLabel funziona, grazie.

Di seguito ho aggiunto la versione monotouch:

    public class UICustomLabel : UILabel
{
    private UITextVerticalAlignment _textVerticalAlignment;

    public UICustomLabel()
    {
        TextVerticalAlignment = UITextVerticalAlignment.Top;
    }

    public UITextVerticalAlignment TextVerticalAlignment
    {
        get
        {
            return _textVerticalAlignment;
        }
        set
        {
            _textVerticalAlignment = value;
            SetNeedsDisplay();
        }
    }

    public override void DrawText(RectangleF rect)
    {
        var bound = TextRectForBounds(rect, Lines);
        base.DrawText(bound);
    }

    public override RectangleF TextRectForBounds(RectangleF bounds, int numberOfLines)
    {
        var rect = base.TextRectForBounds(bounds, numberOfLines);
        RectangleF resultRect;
        switch (TextVerticalAlignment)
        {
            case UITextVerticalAlignment.Top:
                resultRect = new RectangleF(bounds.X, bounds.Y, rect.Size.Width, rect.Size.Height);
                break;
            case UITextVerticalAlignment.Middle:
                resultRect = new RectangleF(bounds.X,
                                            bounds.Y + (bounds.Size.Height - rect.Size.Height)/2,
                                            rect.Size.Width, rect.Size.Height);
                break;
            case UITextVerticalAlignment.Bottom:
                resultRect = new RectangleF(bounds.X,
                                            bounds.Y + (bounds.Size.Height - rect.Size.Height),
                                            rect.Size.Width, rect.Size.Height);
                break;

            default:
                resultRect = bounds;
                break;
        }

        return resultRect;
    }
}

public enum UITextVerticalAlignment
{
    Top = 0, // default
    Middle,
    Bottom
}

3

Il modo più semplice e più semplice è incorporare l'etichetta in StackView e impostare l'asse di StackView su orizzontale, l'allineamento in alto nell'ispettore degli attributi da Storyboard come mostrato qui .


2

Basandomi sulla fantastica risposta di totiG, ho creato una classe IBDesignable che rende estremamente facile personalizzare l'allineamento verticale di una UILabel direttamente dallo StoryBoard. Assicurati solo di impostare la classe della tua UILabel su "VerticalAlignLabel" dall'ispettore di identità di StoryBoard. Se l'allineamento verticale non ha effetto, vai su Editor-> Aggiorna tutte le viste che dovrebbe fare il trucco.

Come funziona: una volta impostata correttamente la classe della tua UILabel, lo storyboard dovrebbe mostrarti un campo di input che accetta un numero intero (codice di allineamento).

Aggiornamento: ho aggiunto il supporto per le etichette centrate ~ Sev


Immettere 0 per Allineamento in alto

Immettere 1 per Middle Alignment

Immettere 2 per Allineamento inferiore

    @IBDesignable class VerticalAlignLabel: UILabel {
    
    @IBInspectable var alignmentCode: Int = 0 {
        didSet {
            applyAlignmentCode()
        }
    }
    
    func applyAlignmentCode() {
        switch alignmentCode {
        case 0:
            verticalAlignment = .top
        case 1:
            verticalAlignment = .topcenter
        case 2:
            verticalAlignment = .middle
        case 3:
            verticalAlignment = .bottom
        default:
            break
        }
    }
    
    override func awakeFromNib() {
        super.awakeFromNib()
        self.applyAlignmentCode()
    }
    
    override func prepareForInterfaceBuilder() {
        super.prepareForInterfaceBuilder()
        
        self.applyAlignmentCode()
    }
    
    enum VerticalAlignment {
        case top
        case topcenter
        case middle
        case bottom
    }
    
    var verticalAlignment : VerticalAlignment = .top {
        didSet {
            setNeedsDisplay()
        }
    }
    
    override public func textRect(forBounds bounds: CGRect, limitedToNumberOfLines: Int) -> CGRect {
        let rect = super.textRect(forBounds: bounds, limitedToNumberOfLines: limitedToNumberOfLines)
        
        if #available(iOS 9.0, *) {
            if UIView.userInterfaceLayoutDirection(for: .unspecified) == .rightToLeft {
                switch verticalAlignment {
                case .top:
                    return CGRect(x: self.bounds.size.width - rect.size.width, y: bounds.origin.y, width: rect.size.width, height: rect.size.height)
                case .topcenter:
                    return CGRect(x: self.bounds.size.width - (rect.size.width / 2), y: bounds.origin.y, width: rect.size.width, height: rect.size.height)
                case .middle:
                    return CGRect(x: self.bounds.size.width - rect.size.width, y: bounds.origin.y + (bounds.size.height - rect.size.height) / 2, width: rect.size.width, height: rect.size.height)
                case .bottom:
                    return CGRect(x: self.bounds.size.width - rect.size.width, y: bounds.origin.y + (bounds.size.height - rect.size.height), width: rect.size.width, height: rect.size.height)
                }
            } else {
                switch verticalAlignment {
                case .top:
                    return CGRect(x: bounds.origin.x, y: bounds.origin.y, width: rect.size.width, height: rect.size.height)
                case .topcenter:
                    return CGRect(x: (self.bounds.size.width / 2 ) - (rect.size.width / 2), y: bounds.origin.y, width: rect.size.width, height: rect.size.height)
                case .middle:
                    return CGRect(x: bounds.origin.x, y: bounds.origin.y + (bounds.size.height - rect.size.height) / 2, width: rect.size.width, height: rect.size.height)
                case .bottom:
                    return CGRect(x: bounds.origin.x, y: bounds.origin.y + (bounds.size.height - rect.size.height), width: rect.size.width, height: rect.size.height)
                }
            }
        } else {
            // Fallback on earlier versions
            return rect
        }
    }
    
    override public func drawText(in rect: CGRect) {
        let r = self.textRect(forBounds: rect, limitedToNumberOfLines: self.numberOfLines)
        super.drawText(in: r)
    }
}


2

puoi anche cambiare la tua UILabel in UITextView, perché fondamentalmente fanno la stessa cosa tranne il vantaggio di UITextView è che il testo viene automaticamente allineato in alto a sinistra


1

Ho questo problema ma la mia etichetta era in UITableViewCell, e in fondo il modo più semplice per risolvere il problema era creare un UIView vuoto e impostare l'etichetta al suo interno con vincoli solo in alto e sul lato sinistro, fuori maledizione imposta il numero di righe a 0


0

Per iOS 7 è quello che ho creato e lavorato per me

@implementation UILabel (VerticalAlign)
- (void)alignTop
{
    CGSize boundingRectSize = CGSizeMake(self.frame.size.width, CGFLOAT_MAX);
    NSDictionary *attributes = @{NSFontAttributeName : self.font};
    CGRect labelSize = [self.text boundingRectWithSize:boundingRectSize options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
                                              attributes:attributes
                                                 context:nil];
    int numberOfLines= ceil(labelSize.size.height / self.font.lineHeight);

    CGRect newFrame = self.frame;
    newFrame.size.height = numberOfLines * self.font.lineHeight;
    self.frame = newFrame;
}

- (void)alignBottom
{
    CGSize boundingRectSize = CGSizeMake(self.frame.size.width, CGFLOAT_MAX);
    NSDictionary *attributes = @{NSFontAttributeName : self.font};
    CGRect labelSize = [self.text boundingRectWithSize:boundingRectSize options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
                                            attributes:attributes
                                               context:nil];
    int numberOfLines= ceil(labelSize.size.height / self.font.lineHeight);

    int numberOfNewLined = (self.frame.size.height/self.font.lineHeight) - numberOfLines;

    NSMutableString *newLines = [NSMutableString string];
    for(int i=0; i< numberOfNewLined; i++){
        [newLines appendString:@"\n"];
    }
    [newLines appendString:self.text];
    self.text = [newLines mutableCopy];
}

0

Swift 2.0: :: Utilizzo dell'estensione UILabel

Crea valori di enumerazione costanti in un file Swift vuoto.

//  AppRef.swift

import UIKit
import Foundation

enum UILabelTextPositions : String {

 case VERTICAL_ALIGNMENT_TOP = "VerticalAlignmentTop"
 case VERTICAL_ALIGNMENT_MIDDLE = "VerticalAlignmentMiddle"
 case VERTICAL_ALIGNMENT_BOTTOM = "VerticalAlignmentBottom"

}

Utilizzo dell'estensione UILabel:

Crea una classe Swift vuota e assegnagli un nome. Aggiungi quanto segue.

//  AppExtensions.swift

import Foundation
import UIKit

    extension UILabel{ 
     func makeLabelTextPosition (sampleLabel :UILabel?, positionIdentifier : String) -> UILabel
     {
      let rect = sampleLabel!.textRectForBounds(bounds, limitedToNumberOfLines: 0)

      switch positionIdentifier
      {
      case "VerticalAlignmentTop":
       sampleLabel!.frame = CGRectMake(bounds.origin.x+5, bounds.origin.y, rect.size.width, rect.size.height)
       break;

      case "VerticalAlignmentMiddle":
       sampleLabel!.frame = CGRectMake(bounds.origin.x+5,bounds.origin.y + (bounds.size.height - rect.size.height) / 2,
        rect.size.width, rect.size.height);
       break;

      case "VerticalAlignmentBottom":
       sampleLabel!.frame = CGRectMake(bounds.origin.x+5, bounds.origin.y + (bounds.size.height - rect.size.height),rect.size.width, rect.size.height);
       break;

      default:
       sampleLabel!.frame = bounds;
       break;
      }
      return sampleLabel!

     }
    }

Utilizzo:

myMessageLabel.makeLabelTextPosition(messageLabel, positionIdentifier: UILabelTextPositions.VERTICAL_ALIGNMENT_TOP.rawValue)

Potresti spiegare a cosa serve sampleLabel: UILabel??
Craig.Pearce

Su questa funzione makeLabelTextPosition (sampleLabel: UILabel ?, positionIdentifier: String) {}, devi passare l'oggetto UILabel.
AG

0

Versione Swift 3 della risposta di @ totiG

class UIVerticalAlignLabel: UILabel {
    enum VerticalAlignment : Int {
        case VerticalAlignmentTop = 0
        case VerticalAlignmentMiddle = 1
        case VerticalAlignmentBottom = 2
    }

    @IBInspectable var verticalAlignment : VerticalAlignment = .VerticalAlignmentTop {
        didSet {
            setNeedsDisplay()
        }
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override func textRect(forBounds bounds: CGRect, limitedToNumberOfLines: Int) -> CGRect {
        let rect = super.textRect(forBounds: bounds, limitedToNumberOfLines: limitedToNumberOfLines)

        switch(verticalAlignment) {
        case .VerticalAlignmentTop:
            return CGRect(x: bounds.origin.x, y: bounds.origin.y, width: rect.size.width, height: rect.size.height)
        case .VerticalAlignmentMiddle:
            return CGRect(x: bounds.origin.x, y: bounds.origin.y + (bounds.size.height - rect.size.height) / 2, width: rect.size.width, height: rect.size.height)
        case .VerticalAlignmentBottom:
            return CGRect(x: bounds.origin.x, y: bounds.origin.y + (bounds.size.height - rect.size.height), width: rect.size.width, height: rect.size.height)
        }
    }

    override func drawText(in rect: CGRect) {
        let r = self.textRect(forBounds: rect, limitedToNumberOfLines: self.numberOfLines)
        super.drawText(in: r)
    }
}

0

La risposta di @ totiG è corretta e ha risolto il mio problema. Ma ho riscontrato un problema durante l'implementazione di questo metodo, in dispositivi più piccoli come 5s, SE, questo non funziona per me. Devo impostare label.sizeToFit()inoverride func layoutSubViews()

override func layoutSubViews() {
    super.layoutSubViews()
    // Do other works if needed
    label.sizeToFit()
}

0

Swift 5

È semplice, l'ordine delle proprietà è tutto.

titleLabel.frame = CGRect(x: 20, y: 20, width: 374, height: 291.2)
titleLabel.backgroundColor = UIColor.clear //set a light color to see the frame
titleLabel.textAlignment = .left
titleLabel.lineBreakMode = .byTruncatingTail
titleLabel.numberOfLines = 4
titleLabel.font = UIFont(name: "HelveticaNeue-Bold", size: 35)
titleLabel.text = "Example"
titleLabel.sizeToFit()
self.view.addSubview(titleLabel)

-2

Come impostare l'allineamento in alto a sinistra per l'applicazione UILabel per iOS? Etichetta Imposta la modalità di contenuto su "In alto a sinistra" per me funziona, grazie mille:
Come impostare l'allineamento in alto a sinistra per l'applicazione UILabel per iOS?  Etichetta Imposta la modalità contenuto su "In alto a sinistra" per me funziona, grazie mille


1
Non fa assolutamente niente per me. Questa sembra intuitivamente che dovrebbe essere la soluzione, motivo per cui mi sono rivolto a Google quando non funzionava (o apparentemente fa tutto, se è per questo).
velkoon
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.