2016-03-25 1 views
0

Я пытаюсь представить цитату, используя представленную с помощью apip-представление uipresentationcontroller, но она не работает. Что я делаю не так? также, как изменить размер представленного представления динамически, чтобы он соответствовал тексту? Благодарю.Как сфокусировать ярлык внутри подзаголовка с быстрым

это мой код:

override func presentationTransitionWillBegin() { 

    presentedView()!.layer.cornerRadius = 15.0 

    //adding label for quote to the presented view 
    let label = UILabel(frame: CGRectMake(presentedView()!.frame.origin.x, presentedView()!.frame.origin.y, presentedView()!.bounds.width, presentedView()!.bounds.height)) 
    label.center = presentedView()!.center 
    label.textAlignment = NSTextAlignment.Center 
    label.text = readQuotesFromLibrary() 
    presentedView()?.addSubview(label) 
    //rest of the code dealing with uipresentationcontroller goes here ... 

As you can see the text is off }

ответ

0

Если вы назначаете представлены каркас Вид на маркировать, то почему нужно назначить центр представил точку на этикетке center.Label будет рисуется как представлена ​​рамка представления.

+0

спасибо. событие, если я удаляю выделение центра, он не решает проблему. – irkinosor

+0

Хорошо, просто дайте мне знать представление, цвет фона которого представленView? –

+0

Представленный вид должен быть белым – irkinosor

0

Рамка вашего UILabel относится к ее супервизору, который в данном случае является представленным, а не представлением представленным представлением. Таким образом, вы должны создать экземпляр этикетки с линией:

let label = UILabel(frame: CGRectMake(0, 0, presentedView()!.bounds.width, presentedView()!.bounds.height)) 

Это ставит верхний левый угол UILabel верхний левый угол presentedView, и дает ему такую ​​же ширину и высоту, как presentedView.

0

Я нашел, что сделал CGRits, чтобы иногда давать непредвиденные результаты, например, в вашем случае. Если вы хотите попробовать альтернативу, я бы рекомендовал макеты. Я считаю, что приведенный ниже код должен сработать для вас.

override func presentationTransitionWillBegin() { 

    presentedView()!.layer.cornerRadius = 15.0 

    //adding label for quote to the presented view 
    let label = UILabel() 
    label.text = readQuotesFromLibrary() 
    label.textAlignment = NSTextAlignment.Center 

    presentedView()!.addSubview(label) 
    label.translatesAutoresizingMaskIntoConstraints = false 
    label.widthAnchor.constraintEqualToAnchor(presentedView()!.widthAnchor).active = true 
    label.heightAnchor.constraintEqualToAnchor(presentedView()!.heightAnchor).active = true 
    label.centerXAnchor.constraintEqualToAnchor(presentedView()!.centerXAnchor).active = true 
    label.centerYAnchor.constraintEqualToAnchor(presentedView()!.centerYAnchor).active = true 

    //rest of the code dealing with uipresentationcontroller goes here ... 

Я не удивлюсь, если вы столкнетесь с вопросом текста оберточной потому котировка на скриншоте не помещается в presentationView; в этом случае вам может понадобиться атрибут attribitedString и разрешить строке охватывать несколько строк. Существуют различные способы включения ярлыка в несколько строк; поэтому атрибутString не единственный способ сделать это.

Я надеюсь, что это поможет! Извините, если вам действительно нужно пройти путь CGRect и не находите это полезным.

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