it-swarm.dev

كيفية تغيير ارتفاع رأس UITableView مجمعة؟

أعرف كيفية تغيير ارتفاع رؤوس الأقسام في عرض الجدول. لكنني غير قادر على العثور على أي حل لتغيير التباعد الافتراضي قبل القسم الأول.

الآن لدي هذا الكود:

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

enter image description here

77
circuitlego

يبدو أنه لا يمكنني ضبط عرض رأس الجدول بارتفاع 0. انتهى بي الأمر إلى القيام بما يلي:

- (void)viewWillAppear:(BOOL)animated{
    CGRect frame = self.tableView.tableHeaderView.frame;
    frame.size.height = 1;
    UIView *headerView = [[UIView alloc] initWithFrame:frame];
    [self.tableView setTableHeaderView:headerView];
}
18
circuitlego

ارجع إلى CGFLOAT_MIN بدلاً من 0 لارتفاع القسم المطلوب.

إرجاع 0 يؤدي UITableView لاستخدام قيمة افتراضية. هذا هو سلوك غير موثق. إذا قمت بإرجاع عدد صغير جدًا ، فستحصل فعليًا على رأس صفري الارتفاع.

سويفت 3:

 func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        if section == 0 {
            return CGFloat.leastNormalMagnitude
        }
        return tableView.sectionHeaderHeight
    }

سويفت:

func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    if section == 0 {
        return CGFloat.min
    }
    return tableView.sectionHeaderHeight
}

الكائنات C:

    - (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0)
        return CGFLOAT_MIN;
    return tableView.sectionHeaderHeight;
}
203
Mark Krenek

إذا كنت تستخدم tableView style مجمعة ، tableView ، فقم تلقائيًا بتعيين الإضافات العلوية والسفلية. لتجنبها وتجنب الإعداد الداخلي ، استخدم طرق التفويض للرأس والتذييل. لا ترجع أبدًا 0.0 لكن CGFLOAT_MIN.

ج موضوعية

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    // Removes extra padding in Grouped style
    return CGFLOAT_MIN;
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    // Removes extra padding in Grouped style
    return CGFLOAT_MIN;
}

سريع

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    // Removes extra padding in Grouped style
    return CGFloat.leastNormalMagnitude
}

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    // Removes extra padding in Grouped style
    return CGFloat.leastNormalMagnitude
}
20
Jakub Truhlář

يمكنك تجربة هذا:

في loadView

_tableView.sectionHeaderHeight = 0;

ثم

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    return 0;
}

يجب إزالته طالما لم يكن لديك أي كائنات في الرأس ...

وإذا كنت تريد حجمًا من رأس المقطع ، فعليك فقط تغيير قيمة الإرجاع.

نفسه إذا لم تحصل على إزالة القسم.

_tableView.sectionFooterHeight = 0;

و

-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
    return 0;
}

حسنًا ، يعمل هذا مع مشاكلي في طريقة عرض الجدول في iOS7.

13
Odd-Arne Dahle

هذا عملت لي مع سويفت 4 . قم بتعديل UITableView على سبيل المثال في viewDidLoad:

// Remove space between sections.
tableView.sectionHeaderHeight = 0
tableView.sectionFooterHeight = 0

// Remove space at top and bottom of tableView.
tableView.tableHeaderView = UIView(frame: CGRect(Origin: .zero, size: CGSize(width: 0, height: CGFloat.leastNormalMagnitude)))
tableView.tableFooterView = UIView(frame: CGRect(Origin: .zero, size: CGSize(width: 0, height: CGFloat.leastNormalMagnitude)))
10
FBente

يجب عليك إزالة الكود self.tableView.tableHeaderView = [UIView new]; بعد إضافتك

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
    return CGFLOAT_MIN;
}
3
Chris Yim

في سويفت 2.0

func tableView(tableView: UITableView, estimatedHeightForHeaderInSection section: Int) -> CGFloat {

        return yourHeight
    }
2
George Asda

يمكنك استخدام viewForHeaderInSection وإرجاع طريقة عرض بأي ارتفاع.

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{

    int height = 30 //you can change the height 
    if(section==0)
    {
       UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, height)];

       return view;
    }
}
2
Divyam shukla

في سويفت 4

قم بإزالة الحشوة العلوية الإضافية في طريقة عرض الجدول المجمعة.

يتم إعطاء الارتفاع هنا 1 كحد أدنى للارتفاع لرأس القسم نظرًا لأنه لا يمكنك إعطاء 0 حيث أن viewview ستأخذ الهامش العلوي الافتراضي إذا تم تعيين ارتفاع صفر.

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 1
}

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    return UIView()
}
1
jaiswal Rajan

مثال على viewForHeaderInSection:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 118)];
view.backgroundColor = COLOR_DEFAULT;

NSString* key = [self.tableKeys objectAtIndex:section];
NSArray *result = (NSArray*)[self.filteredTableData objectForKey:key];
SZTicketsResult *ticketResult = [result objectAtIndex:0];

UIView *smallColoredView = [[UIView alloc] initWithFrame:CGRectMake(0, 5, 320, 3)];
smallColoredView.backgroundColor = COLOR_DEFAULT_KOSTKY;
[view addSubview:smallColoredView];

UIView *topBackgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 8, 320, 40)];
topBackgroundView.backgroundColor = [UIColor colorWithRed:255.0/255.0 green:248.0/255.0 blue:174.0/255.0 alpha:1];
[view addSubview:topBackgroundView];

UILabel *totalWinnings = [[UILabel alloc] initWithFrame:CGRectMake(10, 8, 300, 40)];
totalWinnings.text = ticketResult.message;
totalWinnings.minimumFontSize = 10.0f;
totalWinnings.numberOfLines = 0;
totalWinnings.backgroundColor = [UIColor clearColor];
totalWinnings.font = [UIFont boldSystemFontOfSize:15.0f];
[view addSubview:totalWinnings];

UIView *bottomBackgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 55, 320, 58)];
bottomBackgroundView.backgroundColor = [UIColor colorWithRed:255.0/255.0 green:248.0/255.0 blue:174.0/255.0 alpha:1];
[view addSubview:bottomBackgroundView];

UILabel *numberOfDraw = [[UILabel alloc] initWithFrame:CGRectMake(10, 55, 290, 58)];
numberOfDraw.text = [NSString stringWithFormat:@"sometext %@",[ticketResult.title lowercaseString]];;
numberOfDraw.minimumFontSize = 10.0f;
numberOfDraw.numberOfLines = 0;
numberOfDraw.backgroundColor = [UIColor clearColor];
numberOfDraw.font = [UIFont boldSystemFontOfSize:15.0f];
[view addSubview:numberOfDraw];

return view;
0
Jasper