2016-03-25 90 views
0

我想使用uipresentationcontroller api視圖中的呈現來呈現報價,但它不起作用。我究竟做錯了什麼?另外,如何動態調整呈現的視圖以適應文本?謝謝。如何在swift中居中使用子視圖中的標籤

這是我的代碼:

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將被畫成呈現View的框架。

+0

謝謝。事件,如果我刪除中心分配它不能解決問題 – irkinosor

+0

好吧,讓我知道其背景顏色是呈現viewView? –

+0

呈現的視圖應該是白色的 – irkinosor

0

你UILabel的框架是相對於它的超級視圖,在這種情況下,它是呈現視圖,而不是呈現在頂部的視圖。因此,您應該用線實例標籤:

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

這會將左上角的UILabel的presentedView的左上角,並給它相同的寬度和高度爲presentedView。

0

我發現製作CGRects有時會出現意想不到的結果,就像你的情況一樣。如果你想嘗試一種替代方案,我會建議佈局約束。我相信下面的代碼應該適合你。

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,我不會感到驚訝;在這種情況下,您可能需要使用一個屬性字符串並允許該字符串跨越多行。有多種方法可以讓標籤跨越多行;所以一個歸屬串不是唯一的方法來做到這一點。

我希望有幫助!對不起,如果你真的需要去CGRect的方式,並沒有發現這有用。