سؤال

وأريد أن تعيين ارتفاع رأس الأول في بلدي UITableView. لرؤوس أخرى أريد لها أن تظل الارتفاع الافتراضي. ما قيمة / ثابت يمكن أن أضع في مكان "someDefaultHeight" في التعليمات البرمجية أدناه؟

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0)
        return kFirstHeaderHeight;

    return someDefaultHeight;
}

والشكر

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

المحلول

في IOS 5.0 فصاعدا يمكنك العودة UITableViewAutomaticDimension في معظم الطرق مندوب. في الجزء السفلي من صفحة وثائق

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if(section == CUSTOM_SECTION)
    {
        return CUSTOM_VALUE;
    }
    return UITableViewAutomaticDimension;
}

نصائح أخرى

ومن التحقق من الافتراضات في تطبيقي يبدو لجدول تجميع الافتراضي هو ارتفاع 22 ولجدول غير مجمعة الافتراضي هو ارتفاع 10.

إذا تحقق قيمة sectionHeaderHeight الممتلكات على tableview الخاص الذي ينبغي أن أقول لك.

والواقع أن تفعل خدعة:)

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if(section == 0)
        return kFirstSectionHeaderHeight;
    return [self sectionHeaderHeight];
}

لأغراض اكتمال: في iOS7 + ذروة لقسم أسلوب رؤوس مجمعة هو 55.5 للمرة الأولى و38 لمتابعة رؤوس. (قياس مع DCIntrospect)

ولست متأكدا ما هي الإجابة الصحيحة هنا، ولكن لا 10 أو 22 ويبدو أن الارتفاع الصحيح لطريقة عرض جدول مجمعة في دائرة الرقابة الداخلية 5. أنا باستخدام 44، استنادا <لأ href = "HTTPS: //stackoverflow.com/questions/1235838/uitableview-section-header-height-for-non-grouped-table">this السؤال ، ويبدو على الأقل إلى نحو الارتفاع الصحيح.

لتحصل على الارتفاع الافتراضي، فقط اسمحوا super التعامل معها:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0)
        return kFirstHeaderHeight;

    return [super tableView:tableView heightForHeaderInSection:section];
}

لسريع 4.2 يجب أن تعيد UITableView.automaticDimension

وهذا ينبغي أن تفعل خدعة

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.section == CUSTOM_SECTION)
    {
        return CUSTOM_VALUE;
    }
    return [tableView rowHeight];
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top