将按钮框设置为适合视图

时间:2013-03-18 16:19:53

标签: ios ipad uibutton bounds

我想在UITableView的标题部分显示UIButton。这是我试过的代码

    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0,0, 285, 44)];

    UIButton *headerViewButton = [UIButton buttonWithType:UIButtonTypeCustom];
    headerViewButton.frame = CGRectMake(headerView.bounds.size.width * 7/5, headerView.bounds.size.height * 1/4, 320.0, 30.0);
    headerViewButton.backgroundColor = [UIColor grayColor];
    [headerViewButton setTitle:@"Import main list from other field  >" forState:UIControlStateNormal];
    [headerViewButton addTarget:self
                          action:@selector(buttonPressed:)
                forControlEvents:UIControlEventTouchDown];

    [headerView addSubview:headerViewButton];

问题是我很难调整按钮框架,因此它在横向模式和纵向模式下都很合适。我对使用Interface Builder不太满意。如何正确调整按钮框架以使其适合视图。

我尝试过使用setAutoresizingMask

UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0,0, 320, 44)];
UIButton *headerViewButton = [UIButton buttonWithType:UIButtonTypeCustom];
    headerViewButton.frame = CGRectMake(headerView.bounds.size.width * 7/5, headerView.bounds.size.height * 1/4, 290, 30.0);
    headerViewButton.backgroundColor = [UIColor grayColor];
    [headerViewButton setTitle:@"Import main list from other field  >" forState:UIControlStateNormal];
    [headerViewButton addTarget:self
                         action:@selector(buttonPressed:)
               forControlEvents:UIControlEventTouchDown];

    [headerViewButton setAutoresizingMask:UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleWidth];

    [headerView addSubview:headerViewButton];

当应用程序第一次加载时,按钮丢失,但当我更改方向时,会出现按钮。每次我尝试,它都是相同的模式。应用程序第一次加载时,该按钮将丢失,并且在此之后它将出现在两个方向上。

2 个答案:

答案 0 :(得分:0)

尝试设置

[headerViewButton setAutoresizingMask:UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth];

这样,它会在superview更改时调整大小。 (与在IB中设置自动调整选项相同)

答案 1 :(得分:0)

您需要将按钮的autoresizingMask设置为适当的值。这些值取决于您希望按钮的大小和/或位置随父视图的大小更改而调整的方式。

在您发布的代码中,您使按钮比其父视图更宽,这很奇怪。