Existe uma maneira de mudar a altura de um UIToolbar?

Eu tenho um UIToolbar no Interface Builder e notei que ele está bloqueado para ter 44px de altura. Claro que eu gostaria de fazer isso maior.

A Apple permite o redimensionamento desse controle? Se sim, como faço para isso?

    Claro, basta definir seu quadro de forma diferente:

     [myToolbar setFrame:CGRectMake(0, 50, 320, 35)]; 

    Isso fará com que sua barra de ferramentas tenha 35 pixels de altura. Claro que isso requer um IBOutlet ou criar o UIToolbar programaticamente, mas isso é muito fácil de fazer.

    Se isso não funcionar no SDK 6, é possível resolver como abaixo:

    Selecione o elemento da barra de ferramentas e escolha Editor> Pin> Altura para criar uma restrição. Vá para o View Controller Scene, selecione a restrição Height (44) criada e, em seguida, coloque o valor desejado.

    Descobri que, se eu definir o quadro no iPad, ao ocultar / mostrar a barra de ferramentas, você redefiniria a si mesmo até uma altura de 44 pixels. Acabei tendo que replace o UIToolbar e mudar o método:

     // return 'best' size to fit given size. does not actually resize view. Default is return existing view size - (CGSize)sizeThatFits:(CGSize)size { CGSize result = [super sizeThatFits:size]; result.height = 55; return result; }; 

    Isso corrige a altura mesmo com o hide / show.

    No iOS 6, com autolayout, a abordagem mais simples é uma subclass UIToolbar na qual você substitui instrinsicContentSize . Aqui está o código de um dos meus aplicativos, onde a barra de ferramentas é alta. Seus lados e fundo estão presos nas laterais e no fundo da super visão, como de costume.

     -(CGSize)intrinsicContentSize { return CGSizeMake(UIViewNoIntrinsicMetric, 85); } 

    Para o Xcode 7.1 iOS 9, no layout automático, o tamanho é bloqueado para 44px. A opção do menu Xcode Editor> Pin> Height não está lá, em vez disso, execute a seguinte ação:

    No InterfaceBuilder, clique no elemento da barra de ferramentas para selecioná-lo. Controle + Arraste para baixo em qualquer lugar na barra de ferramentas e solte, um menu pop-up será exibido mostrando a opção “Altura” no topo, selecione-o.

    Agora você tem uma restrição Height para trabalhar e ajustar conforme necessário.

    Você também pode apenas editar o arquivo xib:

    abri-lo como código-fonte e encontrar a input que define o quadro para o UIToolbar, algo ao longo das linhas de

    {{0,420}, {320,44}}

    e apenas altere o valor para 44 para o tamanho que você precisa.

    Dessa forma, a barra de ferramentas será mais alta e, no InterfaceBuilder, você verá o novo tamanho esmaecido e não poderá alterá-lo, mas não precisará de nenhuma saída ou código.

    Contanto que você tenha uma restrição de altura na barra de ferramentas, você pode usar este pequeno snippet que me ajudou a ajustar as alturas das classs que herdam do UIView

     -(void)setHeightConstraintTo:(CGFloat)height forView:(UIView *)view{ NSPredicate *predicate = [NSPredicate predicateWithFormat:@"firstAttribute = %d", NSLayoutAttributeHeight]; NSArray *filteredArray = [view.constraints filteredArrayUsingPredicate:predicate]; if(filteredArray.count > 0){ NSLayoutConstraint *constraint = filteredArray.firstObject; constraint.constant = height; } } 

    Não tenho certeza de como isso funcionaria com a Apple – e, claro, isso depende de como você deseja usar a barra de ferramentas -, mas você pode adicionar uma UIView padrão e alterar sua class no inspetor de propriedades para UIToolbar. Isso oferece transparência e personalização (neste caso, altura) gratuitamente, às custas do layout dos itens do botão da barra.

    Solução rápida:

     myToolbar.frame = CGRect(x: myToolbar.frame.origin.x, y: myToolbar.frame.origin.y, width: myToolbar.frame.size.width, height: 20) 

    O CGRectMake é obsoleto. Isso pode ser substituído pelo CGRect . Isto irá definir a altura da barra de ferramentas para 20. O mesmo funciona para o controle segmentado também.

    No construtor de interface, existe também a possibilidade de usar “Atributos de Tempo de Execução Definidos pelo Usuário”.

    Basta adicionar uma input com o caminho-chave definido como “frame” do tipo “Rect” e definir o valor desejado.

    insira a descrição da imagem aqui