2015-07-01 59 views
6

Bölüm üstbilgilerinin uzun ipler olabileceği bir tablo oluşturmaya çalışıyorum. Ayarları doğru yaptığımı sanıyordum (dinamik satır sayısı, sözcük kaydırma seti) ama bunun yerine dize basitçe kesiliyor. Bölüm üstbilgisinin, başka bir yerde, yaklaşık 3 satırlık metin görüntülemek için yeterli olan 80 yüksekliğiyle boyutlandırıldığını unutmayın.Tablo bölüm üstbilgisi: çok satır/sözcük kaydırma

// Format section header 
override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) { 

    let header: UITableViewHeaderFooterView = view as! UITableViewHeaderFooterView 
    header.contentView.backgroundColor = mainColorBlue 
    header.textLabel.textColor = UIColor.whiteColor() 

    header.textLabel.textAlignment = NSTextAlignment.Left 
    header.textLabel.numberOfLines = 0 // Dynamic number of lines 
    header.textLabel.lineBreakMode = NSLineBreakMode.ByWordWrapping 
    header.textLabel.font = UIFont(name: "HelveticaNeue-Thin", size: 16)! 
    header.textLabel.text = objectsArray[section].sectionName 

} 
+0

Bunu işe aldınız mı? Nasıl çözdüğünüzü bilmek isterim. – zeeple

+0

Hala aynı sorunu yaşıyorum – SwiftMatt

+0

Bunun için bir çözümü olan var mı? – po5i

cevap

0

Tam tersini yapıyorum, satır sayısını çok büyük bir sayıya ayarladım ve sonra Dinamik boyut çalışıyor.

  • Dont herhangi genişlik/yükseklik ayarlamak IB

    • TableViewCells denetimleri etrafında
    • sadece Öncü Firar/Üst/Alt sabitleri

    self.tableView.sectionHeaderHeight = UITableViewAutomaticDimension; self.tableView.estimatedSectionHeaderHeight = 25;

    - (void)viewDidLoad 
    { 
        [super viewDidLoad]; 
    
        //----------------------------------------------------------------------------------- 
        //DYNAMIC TEXT and TABLE ROW HEIGHT 
        //----------------------------------------------------------------------------------- 
        self.tableView.estimatedRowHeight = 80.0f; 
        //also done in heightForRowAtIndexPath 
        self.tableView.rowHeight = UITableViewAutomaticDimension; 
    
        self.tableView.sectionHeaderHeight = UITableViewAutomaticDimension; 
        self.tableView.estimatedSectionHeaderHeight = 80.0f; 
    
    } 
    //comment out 
    //- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { 
    

    Özel bir headerView oluşturmak zorunda olacak da Is it possible to obtain a dynamic table view section header height using Auto Layout?

  • +0

    Film şeridinde herhangi bir genişlik/yükseklik sabitini nasıl ayarlamazsınız? Üstbilgi yüksekliğini 0 olarak ayarlamaya çalışsanız bile, 1 – SwiftMatt

    +0

    düzeltmesiyle sizi sınırlar, genişlikleri ayarlayabilirim ancak FIXED yükseklikleri (örn. Yükseklik = 44) ayarlamamış olursak, etiket aşağı doğru büyür. Minimum bir yüksekliğe ihtiyacım varsa, IB'deki açılır menüyü kullanarak> DAHA FAZLA BÜYÜK VEYA> EQUAL> olarak ayarlayın. Çalışıyor ama IB uyarılarla şikayet edebilir. IB'nin% 100 onayını almak için içeriklerin titizlikle uğraştığını düşünüyorum. –

    0

    bakınız. Yaptığım şey budur - Swift 3, kullanımınız için onu özelleştirmeniz gerekir:

    override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 
    //Need to create a label with the text we want in order to figure out height 
        let label: UILabel = createHeaderLabel(section) 
        let size = label.sizeThatFits(CGSize(width: view.width, height: CGFloat.greatestFiniteMagnitude)) 
        let padding: CGFloat = 20.0 
        return size.height + padding 
    } 
    
    override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 
        let headerView = UITableViewHeaderFooterView() 
        let label = createHeaderLabel(section) 
        label.autoresizingMask = [.flexibleHeight] 
        headerView.addSubview(label) 
        return headerView 
    } 
    
    func createHeaderLabel(_ section: Int)->UILabel { 
        let widthPadding: CGFloat = 20.0 
        let label: UILabel = UILabel(frame: CGRect(x: widthPadding, y: 0, width: self.view.width - widthPadding, height: 0)) 
        label.text = sectionTextArray[section]// Your text here 
        label.numberOfLines = 0; 
        label.textAlignment = NSTextAlignment.left 
        label.lineBreakMode = NSLineBreakMode.byWordWrapping 
        label.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.subheadline) //use your own font here - this font is for accessibility 
        return label 
    }  
    
    İlgili konular