2016-03-25 16 views
0

ile nasıl etiketlendiririm Bir uipresentationcontroller api görünümünden sunulan bir alıntı kullanarak sunmaya çalışıyorum, ancak çalışmıyor. Neyi yanlış yapıyorum? Ayrıca, sunulan görünümü metni sığdırmak için dinamik olarak nasıl yeniden boyutlandırırım? Teşekkürler. Etiket eklemek görünümün çerçeveyi takdim atanarak iseHızlı altyazıya sahip etiketi

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 }

cevap

0

, o zaman neden olarak çekilecek center.Label etiketlemek için sunulan görünümün merkezini atamanız gerekir:

bu

benim kodudur View'in çerçevesi.

+0

Teşekkürler. olay merkezi ayırmayı kaldırırsam sorunu çözmez – irkinosor

+0

Tamam, bana arka plan rengini sunan görünümü bildirin. –

+0

Sunulan görüşün beyaz olan olması gerekiyordu. – irkinosor

0

UILabel'ınızın karesi, bu durumda sunulanView olan süper görünümüne bağlıdır; Böylece, çizgi ile etiket örneğini olmalıdır:

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

Bu UILabel ait presentedView sol üst köşesine sol üst köşesini yerleştirir ve bunu presentedView aynı genişlik ve yüksekliği verir.

0

Bazen sizin durumunuzda olduğu gibi CGRects'in istenmeyen sonuçlar vermesini sağlıyorum. Bir alternatif denemek isterseniz, yerleşim kısıtlamalarını öneriyorum. Aşağıdaki kodun sizin için çalışması gerektiğine inanıyorum.

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 ... 

ayrıca ekran görüntüsündeki alıntı presentationView sığmaz çünkü bir metin kaydırma sorunu çalıştırmak eğer sürpriz olmaz; Bu durumda, bir attributedString kullanmak ve dizenin birden çok satıra yayılmasına izin vermek isteyebilirsiniz. Bir etiketin birden çok satıra yayılmasına izin vermenin çeşitli yolları vardır; bu yüzden bir attributedString bunu yapmanın tek yolu değildir.

Umarım bu yardımcı olur! Eğer gerçekten CGRect yoluna gitmeniz gerekiyorsa ve bunu yararlı bulmuyorsanız özür dilerim.