在 tableview 行中偏移 UIButton 框架

Posted

技术标签:

【中文标题】在 tableview 行中偏移 UIButton 框架【英文标题】:Offsetting UIButton frames in a tableview row 【发布时间】:2011-04-17 02:04:52 【问题描述】:

在我的 cellForRowAtIndexPath 方法中,我想动态创建一些按钮并将它们彼此相邻放置在单元格中。我遇到的问题是 sizeToFit 方法总是将 x 坐标放在 0 位置。有没有办法偏移位置以将其放在上一个按钮旁边?

而不是这个:。我明白了:

- (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];

【问题讨论】:

【参考方案1】:

您应该通过设置 UIView 的 frame 属性来定位它们。

这是一个选项:

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

您还应该将视图添加到单元格的 contentView 中,而不是直接将它们添加到单元格中:

[cell.contentView addSubview:buttonAroma];

在这里查看 UIView 的 frame 属性:

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

.. 上面写着:

如果您想通过以下方式自定义单元格 只需添加额外的视图,您 应该将它们添加到内容视图中 它们将被适当定位 随着细胞进出 编辑模式。

【讨论】:

【参考方案2】:

将它们置于 y=0 的不是 sizeToFit 方法,而是您从未设置任何其他位置的事实。您可以通过分配其centerframe 属性来移动每个按钮;对于后者,您当然希望读出属性,仅修改 CGRect 的原点,然后将其设置回属性,以免弄乱大小。

【讨论】:

以上是关于在 tableview 行中偏移 UIButton 框架的主要内容,如果未能解决你的问题,请参考以下文章

Swift:使用 tableView DidSelect 方法更改单元格的 UIButton 图像

如何在 tableView:viewForFooterInSection 中添加 UIButton 或 UISwitch

同一视图上的 tableview 和 UIButton

在ios中调用另一个UIVIew后如何在tableview中禁用UIButton

UIButton 在 TableView 单元格中不可见

ios TableView List中的三态UIButton