在 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
方法,而是您从未设置任何其他位置的事实。您可以通过分配其center
或frame
属性来移动每个按钮;对于后者,您当然希望读出属性,仅修改 CGRect 的原点,然后将其设置回属性,以免弄乱大小。
【讨论】:
以上是关于在 tableview 行中偏移 UIButton 框架的主要内容,如果未能解决你的问题,请参考以下文章
Swift:使用 tableView DidSelect 方法更改单元格的 UIButton 图像
如何在 tableView:viewForFooterInSection 中添加 UIButton 或 UISwitch