2011-01-02 6 views
0

Я добавляю UIButton к нижнему колонтитулу tableView программно. Эта кнопка имеет левое и правое поле, равный край Tableview:Изменение размера UIButton программно с сохранением поля

UIButton *deleteButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

deleteButton.frame = CGRectMake(10, 60, 300, 34); 
deleteButton.autoresizingMask = UIViewAutoresizingFlexibleWidth 

Я добавляю autoresizingMask, потому что я хочу, чтобы поддерживать вращение. Тем не менее, он не работает так, как я хочу, поскольку кнопка растягивается до упора вправо, как показано на рисунке ниже.

Любая идея, как исправить это? Если я удалю свойство автосохранения, то поле будет правильным.

alt text

ответ

1

UITableView изменяет размер вида (и все его подвидов), возвращенное - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section. Чтобы исправить вашу проблему, вам понадобится представление оболочки, в котором будут размещены ваши UIButton без использования авторезистентности. Вот пример реализации такого UIView класса:

@interface ButtonWrapperView : UIView { 
    UIButton *_button; 
} 

@property (nonatomic, readonly) UIButton *button; 

@end 


@implementation ButtonWrapperView 

@synthesize button = _button; 

- (id)init 
{ 
    if ((self = [super initWithFrame:CGRectZero])) { 
     _button = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain]; 
     [self addSubview:_button]; 
    } 
    return self; 
} 

- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 

    // Layout button 
    _button.frame = CGRectMake(10.0f, 0.0f, self.bounds.size.width - 20.0f, self.bounds.size.height); 
} 

- (void)dealloc 
{ 
    [_button release]; 
    [super dealloc]; 
} 

@end 

Просто вернуть этот вид в - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section и ваша кнопка должна отображаться правильно.

У меня также есть uploaded a sample project, который полностью реализует вышеуказанное решение.

+0

Это фантастика, спасибо! Я попробую это позже и вернусь к вам. –

Смежные вопросы