Изменение размера UIButton программным путем, поддерживая маржу - PullRequest
0 голосов
/ 02 января 2011

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

UIButton *deleteButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];

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

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

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

alt text

1 Ответ

1 голос
/ 02 января 2011

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, и ваша кнопка должна отображаться правильно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...