كيفية الحصول على حجم زر "الحذف" في UITableViewCell عند التمرير للحذف؟

StackOverflow https://stackoverflow.com/questions/1629335

  •  06-07-2019
  •  | 
  •  

سؤال

أقوم بإضافة تسمية التاريخ والوقت على يمين خلية الجدول.عندما تظهر ميزة السحب للحذف زر "حذف"، يجب أن تتحرك تسمية التاريخ والوقت إلى اليسار قليلاً.ولكن كيف يمكن الحصول على حجم زر "الحذف"؟

حاولت العثور عليه في cell.subviews لكنني فشلت.

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

المحلول

وليس لديك لمعرفة حجم الزر. بدلا من ذلك، استخدم حجم الممتلكات contentView الخلية لحساب أحجام subviews. عندما الضرب فوق خلية، وUIKit التكيف مع حجم contentView وندعو layoutSubviews على الخلية وجوه. في فئة فرعية الخاص بك من UITableViewCell، الكتابة فوق طريقة layoutSubviews وتعيين الأحجام المناسبة لsubviews.

RecipeTableViewCell.m من أبل iPhoneCoreDataRecipes نموذج التعليمات البرمجية.

نصائح أخرى

استخدم هذا الرمز في صفك خلية مخصصة

 - (void)layoutSubviews {
        [super layoutSubviews];
        NSMutableArray *subviews = [self.subviews mutableCopy];
        while (subviews.count > 0)
        {
            UIView *subV = subviews[0];
            [subviews removeObjectAtIndex:0];
            if ([NSStringFromClass([subV class])isEqualToString:@"UITableViewCellDeleteConfirmationView"]) 
           {
            UIView *deleteButtonView = (UIView *)[self.subviews objectAtIndex:0];
            CGFloat  deleteBtnHeight=deleteButtonView.frame.size.height;//here you get the height
             }
        }
    }

وحجم يعدل لتتناسب مع النص الوارد. راجع التعليمات البرمجية التالية:

- (NSString *)tableView:(UITableView *)tableView
titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return @"Dynamic width!";
}

ومقابل

- (NSString *)tableView:(UITableView *)tableView
titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return @"⏎";
}

إذا لم تقم بتجاوز طريقة LayoutSubviews في خلية عرض الجدول المخصصة الخاصة بك، فإن طريقتي هي:

  1. قم بإنشاء العرض الفرعي المخصص الخاص بك، وقم بتعيين الإطار بناءً على contentView.bounds.
  2. تعيين autoresizingMask ل UIViewAutoresizingFlexibleWidth.
  3. أضف طريقة العرض الفرعية المخصصة الخاصة بك إلى ContentView للخلية.
  4. تكوين الخلية ل التحرير

الآن، عندما تقوم بالتمرير على الخلية، يظهر زر الحذف ويتم تغيير حجم العرض تلقائيًا باستخدام contentView.

وزر الحذف هو 63x33.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top