IOS – Justifica a UILabel como en el periódico

Estoy intentando alinear mi UILabel / UITextView como en la image a continuación.

Alguien tiene una guía para justificar el text de esa manera.

introduzca la descripción de la imagen aquí

También tengo algunos problemas con NSTextAlignementJustified .

Puede lograr esto con el uso de NSAttributedString, estableciendo la alignment y estableciendo firstLineHeadIndent en algo cercano a cero (¿por qué? Hmmmm … bueno, no lo sé):

 NSMutableParagraphStyle *paragraphStyles = [[NSMutableParagraphStyle alloc] init]; paragraphStyles.alignment = NSTextAlignmentJustified; paragraphStyles.firstLineHeadIndent = 0.001f; NSString *stringTojustify = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"; NSDictionary *attributes = @{NSParagraphStyleAttributeName: paragraphStyles}; NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:stringTojustify attributes:attributes]; CGFloat labelWidth = self.view.frame.size.width * 0.7f; UILabel* myLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.view.frame.size.width * 0.5f - labelWidth * 0.5f, 100, labelWidth, 800)]; myLabel.backgroundColor = [UIColor orangeColor]; myLabel.textColor = [UIColor whiteColor]; myLabel.numberOfLines = 0; myLabel.attributedText = attributedString; [myLabel sizeToFit]; [self.view addSubview:myLabel]; 

Intenta configurar la alignment de tu UILabel en NSTextAlignmentJustified

 label.textAlignment = NSTextAlignmentJustified; 

Y. Bonafons gracias! Siendo nuevo en Swift, me tomó bastante time usar su código, así que estoy escribiendo eso para Swift 2 aquí:

 import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let labelWidth = CGFloat(self.view.frame.size.width * 0.7) let explanationLabel = UILabel(frame: CGRectMake(self.view.frame.size.width * 0.5 - labelWidth * 0.5, 100, labelWidth, 800)) let paragraphStyle = NSMutableParagraphStyle() paragraphStyle.alignment = NSTextAlignment.Justified paragraphStyle.firstLineHeadIndent = 15 paragraphStyle.paragraphSpacingBefore = 10.0 explanationLabel.attributedText = NSAttributedString(string: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum") let mutableAttrStr = NSMutableAttributedString(attributedString: explanationLabel.attributedText!) mutableAttrStr.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: NSMakeRange(0, mutableAttrStr.length)) explanationLabel.backgroundColor = UIColor.orangeColor() explanationLabel.textColor = UIColor.whiteColor() explanationLabel.numberOfLines = 0 explanationLabel.attributedText = mutableAttrStr explanationLabel.sizeToFit() self.view.addSubview(explanationLabel) } } 

¡Espero que esto ayude!

La solución de actualización perfecta es utilizar la testing NSMutableParagraphStyle en xCode 7 y iOS 9

 NSMutableParagraphStyle *paragraphStyles = [[NSMutableParagraphStyle alloc] init]; paragraphStyles.alignment = NSTextAlignmentJustified; //justified text paragraphStyles.firstLineHeadIndent = 1.0; NSDictionary *attributes = @{NSParagraphStyleAttributeName: paragraphStyles}; NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString: YourString attributes: attributes]; YourLabel.attributedText = attributedString; 

Como una pequeña adición a la gran respuesta de Y. Bonafons, puede lograr el mismo resultado configurando 'Sangría de primera línea ' a través de Interface Builder (marcada en xCode 7.3.1).