Parece que no puede encontrar un tutorial que no es como la pregunta del título se describe. Me gustaría entender donde la UIToolbar necesita ser declarada y cómo conseguirlo para mi capa de la vista.

InformationsquelleAutor Ger | 2011-10-10

6 Comentarios

  1. 77

    UIToolbar es una subclase de UIView, así que la respuesta corta a tu pregunta es: al igual que cualquier otro punto de vista.

    Específicamente, este es un ejemplo de cómo crear mediante programación una barra de herramientas. El contexto en este fragmento se viewDidLoad de un controlador de vista.

    UIToolbar *toolbar = [[UIToolbar alloc] init];
    toolbar.frame = CGRectMake(0, 0, self.view.frame.size.width, 44);
    NSMutableArray *items = [[NSMutableArray alloc] init];
    [items addObject:[[[UIBarButtonItem alloc] initWith....] autorelease]];
    [toolbar setItems:items animated:NO];
    [items release];
    [self.view addSubview:toolbar];
    [toolbar release];

    Ver UIToolbar y UIBarButtonItem documentación para más detalles.

    • me gusta tener el botón derecho en el centro de la barra de herramientas, ¿cómo puedo hacer eso?
    • Probablemente tener esto resuelto por ahora, pero: UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
    • Utilice el controlador de vista del navigationController propiedad si se puede. stackoverflow.com/a/12313602/242933
    • mejor hacer esto en viewDidLayoutSubviews ya que el tamaño de UIToolbar difiere para el modo de paisaje.
  2. 74

    Si usted está usando UINavigationController, a continuación, la barra de herramientas viene con defecto.

    Puede agregarla utilizando la siguiente línea de código:

    self.navigationController.toolbarHidden = NO;

    Y agregar el botón a tu Barra de herramientas puede utilizar el siguiente código:

    UIBarButtonItem *flexibleItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
    UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:nil];
    UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:nil];

    flexibleItem se utiliza para mantener una distancia adecuada entre los dos botones que hemos creado anteriormente.

    Ahora usted puede agregar estos tres elementos con el fin de hacerlos visibles en la vista.

    NSArray *items = [NSArray arrayWithObjects:item1, flexibleItem, item2, nil];   
    self.toolbarItems = items;

    Espero que funcione para usted.

    • Creo que este enfoque es mejor, ya que la altura de la barra de herramientas puede cambiar en el futuro.
    • Hay alguna forma fácil de animar este cachorro? Uno de mis VCs usa, pero debajo de ella no. El cambio es discontinua.
    • Creo que esta es la mejor respuesta.
    • Para animar, uso [self.navigationController setToolbarHidden:NO animated:YES] Nota que self.navigationController.toolbar.items = items no no de trabajo. 🙂
    • Voy a poner toolbarItems en init o viewDidLoad? Podemos hacerlo en init ya que no necesitan el acceso a view para hacerlo. Pero, iOS de verdad que no tiene acceso toolbarItems hasta después de viewDidLoad. Si ese es el caso, entonces prefiero postergar y establecer toolbarItems en viewDidLoad.
    • Esto también añade una barra de herramientas a todos los viewControllers de una NavigationController, de todos modos para agregar sólo en la actual VC?

  3. 7

    iOS 11+ SWIFT 4 + Xcode 9 + Restricciones

    Funciona tanto horizontal + Vertical
    Cómo agregar un UIToolbar programación de una aplicación para iOS?

    Cómo agregar un UIToolbar programación de una aplicación para iOS?

        override func viewDidLoad() {
    super.viewDidLoad()
    print(UIApplication.shared.statusBarFrame.height)//44 for iPhone x, 20 for other iPhones
    navigationController?.navigationBar.barTintColor = .red
    let toolBar = UIToolbar()
    var items = [UIBarButtonItem]()
    items.append(
    UIBarButtonItem(barButtonSystemItem: .save, target: nil, action: nil)
    )
    items.append(
    UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(tapsOnAdd))
    )
    toolBar.setItems(items, animated: true)
    toolBar.tintColor = .red
    view.addSubview(toolBar)
    toolBar.translatesAutoresizingMaskIntoConstraints = false
    if #available(iOS 11.0, *) {
    let guide = self.view.safeAreaLayoutGuide
    toolBar.trailingAnchor.constraint(equalTo: guide.trailingAnchor).isActive = true
    toolBar.leadingAnchor.constraint(equalTo: guide.leadingAnchor).isActive = true
    toolBar.bottomAnchor.constraint(equalTo: guide.bottomAnchor).isActive = true
    toolBar.heightAnchor.constraint(equalToConstant: 44).isActive = true
    }
    else {
    NSLayoutConstraint(item: toolBar, attribute: .bottom, relatedBy: .equal, toItem: view, attribute: .bottom, multiplier: 1.0, constant: 0).isActive = true
    NSLayoutConstraint(item: toolBar, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1.0, constant: 0).isActive = true
    NSLayoutConstraint(item: toolBar, attribute: .trailing, relatedBy: .equal, toItem: view, attribute: .trailing, multiplier: 1.0, constant: 0).isActive = true
    toolBar.heightAnchor.constraint(equalToConstant: 44).isActive = true
    }
    }
    • Yo no soy un gran iOS pro. Pero la adición de visualización de los elementos en viewDidAppear parece mal. Por ejemplo, si usted presentar una visión en la parte superior y, a continuación, cerrar, viewDidAppear conseguiría la llama y agregar otro UIToolbar en la parte superior de la misma? 🙂
    • cierto! Sin embargo se pueden definir por el caso de uso.
    • no funciona en la rotación, la restricción debe ser en view no guide
    • restricción deben respectivos de safeAreaLayoutGuide, de lo contrario barra de herramientas se superpone con la casa-indicador.
    • como se puede ver en la segunda captura de pantalla, la barra de herramientas se ve un poco raro, es debido a las limitaciones de
  4. 3

    Para mostrar la Barra de herramientas en la parte inferior con el espacio entre las dos botones en el Lado Izquierdo , y otra en el lado Derecho

    -(void)showToolBar
    {
    CGRect frame, remain;
    CGRectDivide(self.view.bounds, &frame, &remain, 44, CGRectMaxYEdge);
    UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:frame];
    UIBarButtonItem *button1 = [[UIBarButtonItem alloc] initWithTitle:@"Send" style:UIBarButtonItemStyleDone target:self action:nil];
    UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
    UIBarButtonItem *button2=[[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleDone target:self action:nil];
    [toolbar setItems:[[NSArray alloc] initWithObjects:button1,spacer,button2,nil]];
    [toolbar setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin];
    [self.view addSubview:toolbar];
    }

    Nota: Para Dar espacio entre el Botón que acabamos de agregar la línea siguiente

    UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];

    y agregar el espaciador en el

    [toolbar setItems:[[NSArray alloc] initWithObjects:button1,spacer,button2,nil]];
  5. 2

    Pruebe este sencillo Método:

        UIToolbar *toolbar = [[UIToolbar alloc] init];
    toolbar.frame = CGRectMake(0, 0, 300, 44);
    UIBarButtonItem *button1 = [[UIBarButtonItem alloc] initWithTitle:@"Send" style:UIBarButtonItemStyleDone target:self action:@selector(sendAction)];
    UIBarButtonItem *button2=[[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleDone target:self action:@selector(cancelAction)];
    [toolbar setItems:[[NSArray alloc] initWithObjects:button1,button2, nil]];
    [self.view addSubview:toolbar];
  6. 2

    Esta es la forma de implementar un UIToolbar en su aplicación.

    //declare frame of uitoolbar 
    UIToolBar *lotoolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 170, 320, 30)];
    [lotoolbar setTintColor:[UIColor blackColor]];
    UIBarButtonItem *button1 = [[UIBarButtonItem alloc] initWithTitle:@"DATE" style:UIBarButtonItemStyleDone target:self action:@selector(dateToolbardoneButtonAction)];
    UIBarButtonItem *button2=[[UIBarButtonItem alloc]initWithTitle:@"TIME" style:UIBarButtonItemStyleDone target:self action:@selector(timeToolbarbuttonAction)];
    [lotoolbar setItems:[[NSArray alloc] initWithObjects:button1, nil];
    [lotoolbar setItems:[[NSArray alloc] initWithObjects:button2, nil];
    [mainUIview addSubview:lotoolbar];

    Usted también debe tener para implementar los siguientes métodos de delegado:

    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
    {
    }
    - (void)textViewDidChange:(UITextView *)textView{
    NSLog(@"textViewDidChange:");
    }
    - (void)textViewDidChangeSelection:(UITextView *)textView{
    NSLog(@"textViewDidChangeSelection:");
    }
    - (BOOL)textViewShouldBeginEditing:(UITextView *)textView
    {
    [lotextview setText:@""];
    NSLog(@"textViewShouldBeginEditing:");
    return YES;
    }

Dejar respuesta

Please enter your comment!
Please enter your name here