【问题标题】:Bottom/Right Alignment for a UITableViewUITableView 的底部/右侧对齐
【发布时间】:2010-11-29 04:59:08
【问题描述】:

道歉,但这是另一个新手 iPhone/Objective-C 问题。

我正在开发我的第一个 iPhone 应用程序,它是一个简单的 RPN 计算器。我有一个显示堆栈内容的表格,现在我想稍微微调一下显示。

我希望堆栈中的最后一个条目显示在表格底部,文本右对齐。使用

可以轻松实现正确对齐
cell.textLabel.textAlignment = UITextAlignmentRight;

我可以使用以下代码使表格成为视图底部的最后一个条目:

NSIndexPath *scrollIndexPath = [NSIndexPath indexPathForRow:(stackSize - 1) inSection:0];
[tableView scrollToRowAtIndexPath:scrollIndexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];

这很有效,但只有当堆栈上的条目多于视图中的条目时。当堆栈的条目很少时,它们仍然与视图顶部对齐。

我已经尝试改变第一个堆栈条目的单元格高度,以便第一个单元格填充整个视图并随着新单元格的添加而缩小,直到有足够的堆栈条目来填充视图,此时点单元格高度保持不变。这似乎很有希望,但我在让“大”单元格底部对齐标签时遇到了一些麻烦。 (默认情况下垂直居中对齐。)

当我在解决底部对齐问题时,我开始怀疑我是否让这变得比它需要的更复杂。有什么想法吗?

【问题讨论】:

    标签: iphone objective-c uitableview


    【解决方案1】:

    我不知道这是否符合犹太教规,但您可以使用视图变换将表格旋转 180°,然后将每个单元格旋转 180°。我使用这个技巧在我正在编写的应用程序上创建横向表格(90°而不是 180°)。

    【讨论】:

    • 哇,这太聪明了!这个答案没有被批准,但应该是:)
    • 谢谢@Merlin。你可以看到最终结果here。顶部的控制栏实际上是一个表格,很快就会成为您在线游戏的可滚动列表。
    【解决方案2】:

    另一种方法是在添加或删除行时调整表格视图的大小。您更新高度并相应地移动表格视图。像这样的东西看起来还不错:

    - (void)resizeTableView {
        CGFloat tableViewHeight = [self tableView:self.tableView numberOfRowsInSection:0] * self.tableView.rowHeight;
    
        // remember to check the height !!
    
        CGRect frame = self.tableView.frame;
        frame.size.height = tableViewHeight;
        frame.origin.y = BOTTOM_OF_VIEW - tableViewHeight;
        [UIView animateWithDuration:0.3 animations:^{   
            [self.tableView setFrame:frame];
        }];
    }
    

    如果你使用默认的插入和删除动画,记得设置为UITableViewRowAnimationNone,否则看起来很奇怪。

    【讨论】: