2015-05-05 4 views
0

Долгое время читатель, впервые плакат. Я искал все для решения, но мне еще предстоит найти ответ, который работает.Вертикально выровнять текст внутри UILabel (xcode)

Хорошо, проблема: у меня есть UILabel, который получает динамически назначенный ему текст. Если я изменил размер этикетки, чтобы покрыть весь контроллер, текст застрял посередине. Я нашел кучу решений, которые говорят, чтобы добавить следующий код:

detailsLabel.numberOfLines = 0; 
detailsLabel.sizeToFit() 

Однако это ничего не значит.

Может ли кто-нибудь взглянуть на мой код и предоставить предложения?

import UIKit 

class DetailsViewController: UIViewController { 

@IBOutlet weak var detailsLabel: UILabel! 
@IBOutlet weak var lbldetails: UILabel! 


var selectedBeach : Beach? 


override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view. 
    detailsLabel.text = selectedBeach?.greaterDetails 
    lbldetails.text = (selectedBeach?.beachName ?? "") + " Details" 

    detailsLabel.numberOfLines = 0; 
    [detailsLabel .sizeToFit()] 

} 

@IBAction func dismiss(sender: AnyObject) { 
    self.dismissViewControllerAnimated(true, completion: nil) 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 


/* 
// MARK: - Navigation 

// In a storyboard-based application, you will often want to do a little preparation before navigation 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    // Get the new view controller using segue.destinationViewController. 
    // Pass the selected object to the new view controller. 
} 
*/ 
+1

так я думаю, вы не используют автоматическую компоновку? –

+0

Привет, Андре Слотта, спасибо за ваш комментарий. Блок автоматической компоновки проверяется на контроллере представления. – Flexo

+0

ОК, и вы устанавливаете метку в раскадровке? вы установили какие-либо ограничения? –

ответ

2

ok. сделайте следующее:

  1. пальца влево от метки к виду, выпуску и выбрать Ведущее пространство для контейнерной Margin
  2. сопротивления RIGHT от метки к представлению, выпуску и выбрать Трейлинг пространства для контейнерной Margin
  3. перетащите вверх от метки к представлению, выпуска и выберите Top Space для Top Layout Guide

после этого перейдите к инспектору размеров метки и убедитесь, что все ограничения имеют константу Стандарт.

последнее, но не в последнюю очередь идти на атрибуты инспектора лейбла и убедитесь, что линии свойство установлено в 0.

не стесняйтесь спросить, если у вас есть какие-либо вопросы :)

+0

Отлично! Задача решена! Большое спасибо Андре Слота! :) – Flexo

+0

вас очень приветствуют :) –

0

Правильный код в Swift является

detailsLabel.sizeToFit() 

Без []

И для Objective-C это

[detailsLabel sizeToFit]; 
+0

Привет, Stefan Salatic, Спасибо за быстрый ответ, я обновил код с вашим предложением, но я получаю тот же результат. – Flexo

+0

Привет, если вам нужна дополнительная информация, вы можете проверить этот полный ответ http://stackoverflow.com/questions/1054558/vertically-align-text-within-a-uilabel?rq=1 –

0

Вы можете сделать следующие вещи, чтобы включить UILabel эта поддержка многострочный.

lbldetails.numberOfLines = 0 
lbldetails.preferredMaxLayoutWidth = lbldetails.frame.size.width 

Вот я считаю, что ваша UILable поддержка динамической высоты, как в тексте только вопрос относительно не отображается многострочный.

Просьба указать следующие ограничения: UILabel. enter image description here

Надеюсь, это поможет вам.

+0

@flexo, дайте мне знать, если у вас все еще есть проблемы. –

+0

Привет Нет! Спасибо за комментарий. Я добавил ваше решение выше кода, но все же получаю те же результаты. например маленький square с ... внутри. – Flexo

+0

@Flexo, есть ли у вашей метки разная высота? в соответствии с другим текстом .. просто я хочу получить эту проблему с заданными ограничениями или нет? –

Смежные вопросы