2

我想实现一个实现 1-3 个按钮的视图(它实际上将进入 UITableView 的页脚)。我希望这些按钮的布局(以及按钮本身的大小)根据显示的按钮而改变。当您查看特定联系人时,我想要的几乎确切行为的示例位于“联系人”应用程序的“信息”屏幕底部(单击“添加到收藏夹”时会消失,其他按钮会展开以占用漂亮动画中的可用空间)。

当我在不同的布局场景中运行时,我正在对所有这些值进行硬编码,我只是想……“这不是我应该这样做的方式。”

甚至似乎 Interface Builder 有一些功能可以在标尺选项卡中为我执行此操作,但如果我能弄清楚它们是如何在手机上工作的(如果它们工作的话),我会被诅咒的。

有没有人有任何建议或在线教程可以让我找到正确的方向?

非常感谢。

4

2 回答 2

0

你可以看看 斯坦福 cs193p 课程

我认为在其中一个课程/示例中有一个演示,他们以编程方式设置按钮的自动调整大小以及其他一些他们为视图设置动画的地方。您还可以使视图将其每个子视图的宽度动态设置为(ownWidth/numberofSubView),每个元素的位置相同。

[编辑] 像这样?它还不是“动态”的,但是您已经知道可以在“添加/删除”按钮时增加/减少 numberOfbuttons 然后重置所有子视图的新框架

- (void)loadView
{

UIView *view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
view.backgroundColor = [UIColor lightGrayColor];
view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

int numberOfbuttons = 2;
CGFloat buttonsLegth = (-20+view.bounds.size.width)/numberOfbuttons-20;
for(int i=0;i<numberOfbuttons;i++){
    CGRect buttonFrame = CGRectMake(0, 0, buttonsLegth, 37);
    buttonFrame.origin.x = (buttonFrame.size.width+20)*i + 20.0;
    buttonFrame.origin.y =  20.0;
    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; // Autoreleased
    button.frame = buttonFrame;
    [button setTitle:@"Done" forState:UIControlStateNormal];
    [view addSubview:button];
    }
self.view = view;
[view release];
}
于 2009-07-14T02:42:59.347 回答
0

嗨删除视图中的所有按钮并使用此方法再次添加...您必须传递按钮数量和要在其中添加这些按钮的 UIView

-(void)addButtons:(int)numberOfButtons ToView:(UIView *)containerView;
{
    CGRect containerRect = containerView.frame;

    CGFloat padding = 5.0;
    CGFloat width = (containerRect.size.width - (padding*numberOfButtons+1))/numberOfButtons;
    for (int i = 1; i<=numberOfButtons; i++)
    {
        UIButton * btn = [[[UIButton alloc] initWithFrame:CGRectMake(i*padding+width, 0, width, containerRect.size.height)]autorelease];

        //set Button Properties like Target,backColor,Title,,,,etc  MUST SET TAG TO ACCESS THEM IN CLICK METHOD IF YOU ARE USING SAME SELECTOR FOR ALL BUTTONS.

        [containerView addSubview:btn];
    }

}

试试这个,玩得开心......

于 2013-03-02T06:39:15.653 回答