使用一些子视图剪切UIView

时间:2009-06-29 16:22:43

标签: iphone cocoa-touch uiview uibutton

我在UIView中有一些按钮。我的问题是,他们被削减了 在UIView的右侧。我该如何防止这种情况?

alt text http://img.skitch.com/20090629-mj32p1bkff476256pwrpt69n2d.png

我已经检查过Interface Builders的剪辑属性,但它没有 这个问题的解决方案。

此致

3 个答案:

答案 0 :(得分:1)

看起来您要么以编程方式创建这些按钮,要么将初始IB视图窗口重新设置得更大,并期望它缩小到适合屏幕。

有问题的按钮无法正确显示在屏幕上 - 您正在寻找什么效果?

如果您希望所有按钮都合适,您可以将文字大小设置得更小,然后它们就可以适合。

如果您希望按钮大小合适,那么您将需要制作另一行,或将按钮放入侧滚动容器中。

答案 1 :(得分:1)

我一直在使用java,最近才开始学习Apple的Obj-C框架。

滚动和换行的替代方法是使用具有1行和n列的“网格”布局,其中n是按钮的数量。每个单元格具有固定的大小。并且您必须将superview的setNeedsLayout:方法中的按钮(子视图)调整为您需要的任何宽度,以便所有按钮都适合该行。

参见java的GridLayout类。

答案 2 :(得分:0)

肯德尔,谢谢你的回答。

这是我的解决方案:

    if(previousFrame.origin.x + theStringSize.width > 220){
            roundedButton.frame = CGRectMake(15, previousFrame.origin.y + 30 ,  theStringSize.width + 8, theStringSize.height);
            [myContainer insertSubview:roundedButton belowSubview:[tagsContainer.subviews lastObject]];
        }else {
            roundedButton.frame = CGRectMake(previousFrame.origin.x + previousFrame.size.width + 5, previousFrame.origin.y,  theStringSize.width + 5, theStringSize.height);
            [myContainer insertSubview:roundedButton belowSubview:[tagsContainer.subviews lastObject]]; 
        }

我计算一下,我从左侧移动了多少像素。在某个阈值(在我的情况下是220)我开始一个新的行。