每次我单击UISegementedControl时,它都会捕捉回到其原始框架。我几乎无法通过半透明的工具栏看到它。
我有一个带有UITableView的UIViewController和UIToolBar,如下所示:


在工具栏后面的表格视图下方隐藏着一个UISegmentedControl:


筛选器按钮调用“ onFilterButtonPressed”方法

- (IBAction)onFilterButtonPressed:(id)sender
{
    if(self.filterBar.hidden){
        [self showFilterBar];
    } else {
        [self hideFilterBar];
    }
}

- (void)hideFilterBar
{
    CGRect filterBarFrame = CGRectMake(0, self.view.frame.size.height+(self.filterBar.frame.size.height+1), self.filterBar.frame.size.width, self.filterBar.frame.size.height);
    CGRect tableViewFrame = CGRectMake(self.tableView.frame.origin.x, self.tableView.frame.origin.y,self.tableView.frame.size.width, self.tableView.frame.size.height+(self.filterBar.frame.size.height+1));

    [UIView animateWithDuration:0.3 animations:^{
        [self.filterBar setFrame:filterBarFrame];
        [self.tableView setFrame:tableViewFrame];
    } completion:^(BOOL finished) {
        self.filterBar.hidden = YES;
    }];
}

- (void)showFilterBar
{
    CGRect filterBarFrame = CGRectMake(0, self.view.frame.size.height-(self.filterBar.frame.size.height+1), self.filterBar.frame.size.width, self.filterBar.frame.size.height);
    CGRect tableViewFrame = CGRectMake(self.tableView.frame.origin.x, self.tableView.frame.origin.y,self.tableView.frame.size.width, self.tableView.frame.size.height-(self.filterBar.frame.size.height+1));

    self.filterBar.hidden = NO;
    [UIView animateWithDuration:0.3 animations:^{
        [self.tableView setFrame:tableViewFrame];
        [self.filterBar setFrame:filterBarFrame];
    }];

}

最佳答案

这是由于自动布局。启用该功能(默认情况下为默认),您应该通过修改约束而不是设置框架来进行视图的任何定位或调整大小。

关于ios - 触摸后,UISegmentedControl还原为原始帧,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22953340/

10-15 16:06