Frage

Setup: Ich habe einen UITextView innerhalb eines UITableViewCell des contentView. Ich will es die volle Größe der Zelle zu übernehmen. Ich schaffe den Textansicht wie folgt:

UITextView *textView = [[[UITextView alloc] initWithFrame:CGRectMake(0,0,268,43)] autorelease];
textView.backgroundColor = [UIColor redColor];
textView.layer.cornerRadius = 10;
textView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

Und ich heightForRowAtIndexPath außer Kraft setzen für diese Zeile zurück 200.

Die Hintergrundfarbe ist nur so dass ich sagen kann, wo es ist. Die Zelle scheint automatisch werden, um es richtig auf den ersten Blick Sizing. Allerdings muss ich es weiterhin richtig, um die Größe, während die Schnittstelle autorotating, die nur manchmal scheint zu funktionieren, und nur, wenn ich die Bearbeitung nicht die Textview. Andere Zeiten, es die Ansicht ändert die Größe eine sehr geringe Höhe hat (sieht aus wie -1), oder macht sie zu breit, oder ist es einfach nicht einmal die Größe überhaupt.

Ich habe versucht, zwingende layoutSubviews in der Zelle und nur nichts tun, aber selbst das ist noch nicht die Ansicht aus dem ganzen Ort Größe ändern.

Ich habe für eine Weile jetzt an diese hacken, aber noch keine Lösung gefunden zu haben.

War es hilfreich?

Lösung

Ein UITableViewCell hat eine feste Höhe, die Höhe von den UITableView Delegierten zur Verfügung gestellt. Wenn Sie das Gerät drehen, wird sich nie ändern die Höhe der Zeile, es sei denn, Sie -reloadData auf Ihrem Tableview nennen. Ich würde loszuwerden, die die automatischen und verwalten Sie es selbst.

Wenn Sie Ihre Textfield init können Sie ganz einfach der Rahmen auf CGRectZero. Dann -layoutSubviews implementieren (und Super in dieser Methode aufrufe, vor den Rahmen Ihrer Subviews Einstellung) und stellen Sie den Rahmen des UITextField nach der contentRect Eigenschaft der Zelle.

- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier {
    if(self = [super ...]){ // or -initWithStyle:reuseIdentifier: whatever you want
        _textView = [[UITextView alloc] initWithFrame:CGRectZero]; // Instance variable
        // Probably not needed to set autoresizing mask
    }

    return self;
}
- (void)layoutSubviews {
    [super layoutSubviews];
    _textView.frame = CGRectMake(0.0f, 0.0f, self.contentRect.size.width, self.contentRect.size.height); // Adjust as needed
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top