2016-10-16 6 views
1

In meiner App aktualisiere ich den Fußzeilentext meiner Tabellenansicht dynamisch, wenn ich eine Zelle auswähle. Leider scheint die Art und Weise, wie ich das tue, den Rahmen der UILabel innerhalb meiner UIView zu ändern. Wenn ich beispielsweise auf eine Zelle tippe, wird die Breite meiner Beschriftung zwischen 950 und 1200 angezeigt. In Wirklichkeit sollte die Breite (höchstens) die Breite der Ansicht sein. Hier ist mein Code:Etikett in UITableView Footer dynamisch festlegen und seine Größe ändern

def tableView(tableView, viewForFooterInSection:section) 
    (section != (self.sections.count - 1)) ? footer_view : nil 
end 

def tableView(tableView, heightForFooterInSection: section) 
    if section != (self.sections.count - 1) 
    footer_label.frame.size.height + 20.0 
    else 
    1.0 
    end 
end 

def tableView(tableView, didSelectRowAtIndexPath: indexPath) 
    tableView.beginUpdates 
    footer_label.text = "Details: #{updated_details}" 
    footer_label.sizeToFit 
    tableView.endUpdates 
end 


def footer_view 
    @footer_view ||= UIView.alloc.initWithFrame(CGRectZero).tap do |fv| 
    fv.addSubview(footer_label) 
    end 
end 

def footer_label 
    @footer_label ||= UILabel.alloc.initWithFrame(CGRectZero).tap do |pl| 
    pl.frame = CGRect.new(
     [15, 10], 
     [self.view.frame.size.width - 30, self.view.frame.size.height] 
    ) 
    pl.font = UIFont.preferredFontForTextStyle(UIFontTextStyleCaption2) 
    pl.numberOfLines = 0 
    pl.lineBreakMode = NSLineBreakByWordWrapping 
    pl.text   = "" 
    pl.sizeToFit 
    end 
end 

Ich vermute, ich Aufruf sizeToFit Teil des Problems ist?

+0

Ist Ihr Fall ähnlich wie [dieser] (http://stackoverflow.com/questions/39825290/make-uicollectionview- Kopf-dynamische Höhe/39832379 # 39832379)? –

Antwort

0

Ich denke, Sie müssen eine dynamische Höhe für die Fußzeile verwenden.

tableView.heightForFooterInSection = UITableViewAutomaticDimension 
tableView.estimatedSectionFooterHeight = 25.0 

Denken Sie daran, dass Sie die Einschränkungen des UILabel festlegen müssen. Vielleicht müssen Sie den Abschnitt aktualisieren, um die Höhe zu ändern.

1

Ich dachte, ich hätte das versucht, aber vielleicht war meine Bestellung aus. So oder so, löste ich es von der Fußzeile der Rahmens Einstellung wieder innerhalb von beginUpdates/endUpdates:

tableView.beginUpdates 
frame = footer_label.frame 
footer_label.text = "Plan Details: #{updated_details}" 
frame.size.width = self.view.frame.size.width - 30 
footer_label.frame = frame 
footer_label.sizeToFit 
tableView.endUpdates 
Verwandte Themen