2017-12-17 9 views
0

私はスクロールビューの中に動的テキストを含むテキストラベルを持っています。数行のテキストがラベルの下から切り取られています。ストーリーボードで自動レイアウトを使ってすべてを設定しました。TextLabel ScrollViewで切り取る

UIScrollViewのViewDidLoadでisScrollingEnabledを別の投稿ごとに切り替えることを試みました。

は、私もそれが

私はHTMLでのフォントを変更するために使用している内線に除去のプロセスによって、問題を絞り込んしたテキストラベルとパディングの一番下の制約を削除しようとしました私はhtml属性の文字列で作業しています。

:これは、時々だけのカップルラインをテキストを切断された理由を私は時々、コンテンツの大多数、そして時にはすべてのコンテンツのストーリーボード階層

extension NSAttributedString { 

    func changeHTMLFont(_ text: NSAttributedString) -> NSAttributedString { 
    let newAttributedString = NSMutableAttributedString(attributedString: (text)) 
    newAttributedString.enumerateAttribute(NSAttributedStringKey.font, in: NSMakeRange(0, newAttributedString.length), options: []) { value, range, stop in 
    guard let currentFont = value as? UIFont else { 
    return 
    } 
    //USE FOR FACE OPTIONS 
    let fontDescriptor = currentFont.fontDescriptor.addingAttributes([UIFontDescriptor.AttributeName.family: "Optima", UIFontDescriptor.AttributeName.face: "Bold"]) 
    //let fontDescriptor = currentFont.fontDescriptor.addingAttributes([UIFontDescriptorFamilyAttribute: "Optima"]) 
    if let newFontDescriptor = fontDescriptor.matchingFontDescriptors(withMandatoryKeys: [UIFontDescriptor.AttributeName.family]).first { 
    let newFont = UIFont(descriptor: newFontDescriptor, size: 32.0) //use size: currentFont.pointSize for default font size 
    newAttributedString.addAttributes([NSAttributedStringKey.font: newFont], range: range) 
    } 
    } 
    return newAttributedString 
    } 

} 

が欠落している、把握することはできませんStoryboard Hierarchy

UITextLabel制約(スーパーはUIScrollViewのある):

Text Label Constraints

ラベルの下部に到達したときに

enter image description here

画面の表示:

UPDATED IMAGES:スクロール前の画面の

ビュー

enter image description here

答えて

1

をscrollviewを持っている必要があります決定的なコンテンツサイズ。これを行うには、そのサブビューの幅/高さ(少なくとも1つ)が必要です。

UILabelの幅を画面の幅(任意の余白を差し引いた幅)に設定できます。そして、950にデフォルトの値にその高さ、設定の高さの制約の優先順位を設定するには、その後1000

enter image description here

enter image description here

+0

ありがとうございました。不足している制約(高さ)を設定し、ビューがスクロールしなかった場合、私は抱擁と圧縮の優先順位を設定していないことに気付きました。私がそれをしたら、ビューはスクロールされましたが、テキストはまだ切り取られています – froggomad

+0

私は同じページにいることを確認するためにビューのイメージを追加しました...私はだと思います – froggomad

+0

プロジェクトを追加できますか? – Demosthese

1

にUILabelの垂直コンテンツハグと圧縮の優先順位を設定し、私は私がしてストーリーボードを使用したことがありませんチェックするボックスを教えてもらえませんでしたが、autolayoutを正しく使用している場合はスクロールビューの高さを明示的に設定する必要はありません(高さが必要なビューがある場合はもちろんです)。ダイナミックラベル、何もありません。

UILabel(またはスクロールビューの一番下のビュー)がスクロールビューの下部に固定されている限り、問題ありません。あなたも適切にスクロールビューの先頭に最上位のビューを停泊している場合

someLabel.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor).isActive = true 

は、自動レイアウトはあなたのためのコンテンツのサイズを処理します(そこに複数のルールがあるが、これは一般的な前提です)。ラベルに関しては、autolayoutの大きさもあなたに合わせてください。

someLabel.text = someLongString 
someLabel.numberOfLines = 0 
someLabel.translatesAutoresizingMaskIntoConstraints = false 
scrollView.addSubview(someLabel) 
someLabel.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor, constant: 16).isActive = true 
someLabel.topAnchor.constraint(equalTo: someView.bottomAnchor, constant: 32).isActive = true 
someLabel.widthAnchor.constraint(equalTo: view.widthAnchor, constant: -32).isActive = true 
someLabel.sizeToFit() 

これ以上何もする必要はありません。

+0

ありがとうございました。テキストラベルはスクロールビューの下部に固定されています。笑いとくすみのためにコードで設定しようとしましたが、結果は同じです:( ラベルの最後まで内容のサイズが正しく処理されています。もう1つは120行、1行は切り捨てられます 非常に奇妙な動作です – froggomad

+0

私は同じページにいることを確認するためにビューのイメージを追加しました...私は – froggomad

関連する問題