2016-02-12 60 views
0

我試圖展示一張卡片,但當detailTextLabel變得太長時,會導致卡片超出視野範圍。我不確定這是否是一個錯誤。我已將.numberOfLines調整爲各種數字,但似乎沒有效果。卡可以限制在視圖的寬度嗎?

// Detail label. 
    let detailLabel: UILabel = UILabel() 
    detailLabel.text = "When this text gets too long it does not wrap, it will extend off the page" 
    detailLabel.font = UIFont(name: "Roboto-Thin", size: 18) 
    detailLabel.numberOfLines = 0 
    cardView.detailLabel = detailLabel 

Example of card extending beyond the page.

編輯

下面是該cardView的全部代碼。

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    let cardView: CardView = CardView() 

    // Title label. 
    let titleLabel: UILabel = UILabel() 
    titleLabel.text = self.type[indexPath.row].capitalizedString 
    titleLabel.textColor = MaterialColor.blue.darken1 
    titleLabel.font = UIFont(name: "Roboto-Medium", size: 23) 
    cardView.titleLabel = titleLabel 

    // Detail label. 
    let detailLabel: UILabel = UILabel() 
    detailLabel.text = "When this text gets too long it does not wrap, it will extend off the page" 
    detailLabel.font = UIFont(name: "Roboto-Thin", size: 18) 
    detailLabel.numberOfLines = 100 
    cardView.detailLabel = detailLabel 

    // Yes button. 
    let btn1: FlatButton = FlatButton() 
    btn1.pulseColor = MaterialColor.blue.lighten1 
    btn1.pulseScale = false 
    btn1.setTitle("Ok", forState: .Normal) 
    btn1.setTitleColor(MaterialColor.blue.darken1, forState: .Normal) 


    // Add buttons to left side. 
    cardView.leftButtons = [btn1] 

    // To support orientation changes, use MaterialLayout. 
    view.addSubview(cardView) 
    cardView.translatesAutoresizingMaskIntoConstraints = false 
    MaterialLayout.alignFromTop(view, child: cardView, top: self.view.frame.height/4) 
    MaterialLayout.alignToParentHorizontally(view, child: cardView, left: 10, right: 10) 
} 

}

+0

您是否在使用autolayout?你也是動態地將子卡添加爲子視圖? – NSNoob

+0

是的,使用自動佈局。我在編輯中包含了整個代碼。這幾乎是從github回購複製粘貼。 –

回答

1

所以問題是你使用的是一個UITableViewController。當你將CardView添加到你的視圖屬性中時,它實際上是將它添加到UITableView中,當你滾動tableView時它將會滾動。其他問題沒有正確擴展是由於「|」 AutoLayout中的值,這似乎是放置在TableView中時打破。這可能是TableView如何以數學方式設置的結果。無論哪種方式,爲了避免滾動問題,您將需要使用UIViewController並將UITableView作爲子視圖添加到它,或者如果您熱衷於使用UITableViewController,則應該將其作爲子ViewController添加到一個父ViewController,你也可以添加你的CardView。這也將最終解決您的界限問題。

在Material repo - > Examples/Programmatic/SideViewController示例項目中,您可以找到一個作爲子視圖添加的tableView,並且在那裏您可以放置​​CardView代碼,因爲您已經在當前項目。

0

我想你的代碼片段在示例項目,一切似乎工作。我用這個代碼

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    let cardView: CardView = CardView() 

    // Title label. 
    let titleLabel: UILabel = UILabel() 
    titleLabel.text = "Activities dhajshd ajshd ashd kjashd jkasd jk asjkd asjk d" 
    titleLabel.textColor = MaterialColor.blue.darken1 
    titleLabel.font = UIFont(name: "Roboto-Medium", size: 23) 
    cardView.titleLabel = titleLabel 

    // Detail label. 
    let detailLabel: UILabel = UILabel() 
    detailLabel.text = "When this text gets too long it does not wrap, it will extend off the page" 
    detailLabel.font = UIFont(name: "Roboto-Thin", size: 18) 
    detailLabel.numberOfLines = 100 
    cardView.detailLabel = detailLabel 

    // Yes button. 
    let btn1: FlatButton = FlatButton() 
    btn1.pulseColor = MaterialColor.blue.lighten1 
    btn1.pulseScale = false 
    btn1.setTitle("Ok", forState: .Normal) 
    btn1.setTitleColor(MaterialColor.blue.darken1, forState: .Normal) 


    // Add buttons to left side. 
    cardView.leftButtons = [btn1] 

    // To support orientation changes, use MaterialLayout. 
    view.addSubview(cardView) 
    cardView.translatesAutoresizingMaskIntoConstraints = false 
    MaterialLayout.alignFromTop(view, child: cardView, top: self.view.frame.height/4) 
    MaterialLayout.alignToParentHorizontally(view, child: cardView, left: 10, right: 10) 
} 

標題和細節標籤是單行過長和CardView適當響應。

enter image description here

所以我有一個懷疑,你的「觀點」可能是廣泛的。你能確認你的ViewController的「寬度」至多是設備的寬度嗎?

+0

通過'print(self.view.frame.width)'它告訴我我的視圖寬度爲320px,這對於5S模擬器是正確的。 –

+0

您是否在設備上發現過此問題?或者只是5s模擬器? – CosmicMind

+0

剛剛在物理設備上嘗試過,發生同樣的問題。同樣,不確定這是否相關,但如果我在TableView中向下滾動,則卡片出現在頂部(視圖外)。 –

相關問題