Смещение кадров UIButton в строке таблицы - PullRequest
0 голосов
/ 17 апреля 2011

Внутри моего метода cellForRowAtIndexPath я хотел бы динамически создавать некоторые кнопки и размещать их рядом друг с другом в ячейках.Проблема, с которой я сталкиваюсь, состоит в том, что метод sizeToFit всегда помещает координату x в позицию 0.Есть ли способ сместить позицию, чтобы поместить ее рядом с предыдущей кнопкой?

Вместо этого: Desired effect.Я получаю это: Not desired

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {


UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"cell"];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
                                   reuseIdentifier:@"cell"] autorelease];
    cell.accessoryType = UITableViewCellAccessoryNone;

    if ([indexPath section] == 0) {
        UIButton *buttonClean = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        [buttonClean addTarget:self 
                   action:@selector(aMethod:)
         forControlEvents:UIControlEventTouchDown];
        [buttonClean setTitle:@"Clean Cup" forState:UIControlStateNormal];
        [buttonClean sizeToFit];
        [cell addSubview:buttonClean];

        UIButton *buttonAroma = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        [buttonAroma addTarget:self 
                   action:@selector(aMethod:)
         forControlEvents:UIControlEventTouchDown];
        [buttonAroma setTitle:@"Aroma" forState:UIControlStateNormal];
        [buttonAroma sizeToFit];
        [cell addSubview:buttonAroma];

Ответы [ 2 ]

1 голос
/ 17 апреля 2011

Вы должны позиционировать UIViews, установив их frame свойство.

Это опция:

[buttonAroma setFrame:CGRectMake(buttonClean.frame.size.width,0,buttonAroma.frame.size.width,buttonAroma.frame.size.height)];

Вы также должны добавить свои представления в * 1008 ячейки.* contentView вместо непосредственного добавления их в ячейку:

[cell.contentView addSubview:buttonAroma];

См. свойство frame UIView здесь:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/instp/UIView/frame

См. UITableViewCell contentView свойство здесь:

http://developer.apple.com/library/ios/documentation/uikit/reference/UITableViewCell_Class/Reference/Reference.html#//apple_ref/occ/instp/UITableViewCell/contentView

.. где написано:

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

0 голосов
/ 17 апреля 2011

Это не метод sizeToFit, который помещает их в y = 0, это тот факт, что вы никогда не устанавливаете какую-либо другую позицию.Вы можете перемещать каждую кнопку, назначая ее center или frame свойства;для последнего вы, конечно, захотите прочитать свойство, изменить только происхождение CGRect и установить его обратно в свойство, чтобы не испортить размер.

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