在我的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];
答案 0 :(得分:1)
您应该通过设置 frame 属性来定位UIViews。
这是一个选项:
[buttonAroma setFrame:CGRectMake(buttonClean.frame.size.width,0,buttonAroma.frame.size.width,buttonAroma.frame.size.height)];
您还应该将您的观点添加到单元格的 contentView ,而不是直接将它们添加到单元格中:
[cell.contentView addSubview:buttonAroma];
请在此处查看UIView的 frame 属性:
请在此处查看UITableViewCell的 contentView 属性:
..它说:
如果您想通过自定义单元格 只需添加其他视图即可 应该将它们添加到内容视图中 他们将适当地定位 当细胞过渡进出 编辑模式。
答案 1 :(得分:0)
这不是sizeToFit
方法将它们置于y = 0,而是你从未设置任何其他位置的事实。您可以通过分配其center
或frame
属性来移动每个按钮;对于后者,您当然希望读出属性,仅修改CGRect的原点,并将其设置回属性,以免弄乱大小。