سؤال

وإعداد: لدي UITextView داخل UITableViewCell على contentView ل. أريد أن تأخذ ما يصل الحجم الكامل للخلية. I إنشاء عرض النص كما يلي:

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

وI تجاوز heightForRowAtIndexPath للعودة 200 لهذا الصف.

ولون الخلفية فقط حتى أستطيع أن أقول أين هو. ويبدو أن الخلية المراد تحجيم تلقائيا بشكل صحيح على القول الأول. ومع ذلك، أنا في حاجة إليها لمواصلة حجمه بشكل صحيح في حين autorotating واجهة، الذي يبدو فقط للعمل في بعض الأحيان، وفقط عندما لا أكون تحرير textView. وفي أحيان أخرى، وتغيير حجم العرض لديك ارتفاع صغير جدا (يبدو -1)، أو يجعلها واسعة جدا، أو فقط حتى لا تغيير على الإطلاق.

ولقد حاولت تجاوز layoutSubviews في الخلية وفقط لا تفعل شيئا، ولكن حتى هذا لا يوقف عرض من تغيير في كل مكان.

ولقد تم القرصنة بعيدا في هذه لحظة الآن، ولكن لا يزال لم أجد الحل.

هل كانت مفيدة؟

المحلول

وA UITableViewCell يبلغ ارتفاعه ثابت، وارتفاع تقدمها مندوب UITableView ل. عند تدوير الجهاز، فإن ارتفاع الصف تتغير أبدا، إلا إذا كنت استدعاء -reloadData على tableView الخاص بك. فما استقاموا لكم فاستقيموا التخلص من autoresizing وإدارة بنفسك.

عند الحرف الأول حيز النص الخاص بك، يمكنك بسهولة وضع الإطار إلى CGRectZero. ثم تنفيذ -layoutSubviews (وندعو فائقة في هذه الطريقة، <م> قبل وضع أطر subviews الخاص بك) وتعيين الإطار من UITextField استنادا إلى خاصية contentRect للخلية.

- (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
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top