当前位置: 代码迷 >> 综合 >> 【IOS 开发学习总结-OC-50】★ios开发之UI控件——UIToolBar(工具栏)
  详细解决方案

【IOS 开发学习总结-OC-50】★ios开发之UI控件——UIToolBar(工具栏)

热度:77   发布时间:2024-01-19 01:27:52.0

【IOS 开发学习总结-OC-50】★ios开发之UI控件——UIToolBar(工具栏)

UIToolBar

UIToolBar继承了 UIView, 通常作为多个 UIBarButtonItem 容器,每个UIBarButtonItem代表工具条上的一个控件。UIToolBar可以被放在应用界面的任意位置,通常是放在应用界面的顶端或者底端。

UIToolBar的用法

使用UIToolBar最简单的方法是在 IB 中将UIToolBar控件拖入应用设计界面,再拖入需要的BarButtonItem控件。

UIToolBar属性

UIToolBar可配置属性较少,有如下属性:
这里写图片描述
属性说明:
1. barStyle:指定工具栏风格。枚举值如下(其中有在 Xcode7中弃用的项目,在属性面板中设置 比代码设置更方便):

 typedef NS_ENUM(NSInteger, UIBarStyle) {UIBarStyleDefault          = 0, //——默认风格UIBarStyleBlack            = 1,  UIBarStyleBlackOpaque      = 1, // Deprecated. Use UIBarStyleBlack——黑色不透明, 弃用UIBarStyleBlackTranslucent = 2, // Deprecated. Use UIBarStyleBlack and set the translucent property to YES ——黑色半透明, 弃用
};

2.items:是一个 NSArry 对象,该对象包含多个 BarButtonItem 对象(每个代表一个控件)。

示例效果:
这里写图片描述

UIToolBar上可以放任何控件,但有条件

UIToolBar上可以放任何控件,条件是:需要把添加的控件包装成 UIBarButtonItem.

UIBarButtonItem的初始化方法

  • - (instancetype)initWithImage:(nullable UIImage *)image style:(UIBarButtonItemStyle)style target:(nullable id)target action:(nullable SEL)action;——初始化包装一个 UIImageView普通按钮的UIBarButtonItem;

  • - (instancetype)initWithImage:(nullable UIImage *)image landscapeImagePhone:(nullable UIImage *)landscapeImagePhone style:(UIBarButtonItemStyle)style target:(nullable id)target action:(nullable SEL)action NS_AVAILABLE_IOS(5_0);// landscapeImagePhone will be used for the bar button image when the bar has Compact or Condensed bar metrics.

  • - (instancetype)initWithTitle:(nullable NSString *)title style:(UIBarButtonItemStyle)style target:(nullable id)target action:(nullable SEL)action;——初始化包装一个普通按钮的UIBarButtonItem;

  • - (instancetype)initWithBarButtonSystemItem:(UIBarButtonSystemItem)systemItem target:(nullable id)target action:(nullable SEL)action;——初始化包装一个系统按钮(图标,风格是固定的)的UIBarButtonItem;

  • - (instancetype)initWithCustomView:(UIView *)customView;——任意自定义 UI 控件的UIBarButtonItem。

示例:自定义工具栏控件:

这里写图片描述
实现代码:

#import "FKViewController.h"@interface FKViewController ()@end@implementation FKViewController
UIProgressView* prog;
NSTimer* timer;
- (void)viewDidLoad
{[super viewDidLoad];// 创建一个工具条,并设置它的大小和位置UIToolbar *myToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 20, 320, 44)];// 将工具条添加到当前应用的界面中[self.view addSubview:myToolbar];// 创建使用文本标题的UIBarButtonItemUIBarButtonItem* bn1 = [[UIBarButtonItem alloc]initWithTitle:@"OK"style:UIBarButtonItemStylePlaintarget:selfaction:@selector(clicked:)];// 创建使用自定义图片的UIBarButtonItem UIBarButtonItem* bn2 = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"heart.gif"]style:UIBarButtonItemStyleBorderedtarget:selfaction:@selector(clicked:)];// 创建使用系统图标的UIBarButtonItemUIBarButtonItem* bn3 = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAddtarget:selfaction:@selector(clicked:)];// 创建一个可伸缩的UIBarButtonItemUIBarButtonItem *flexItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpacetarget:nilaction:nil];prog = [[UIProgressView alloc]initWithProgressViewStyle:UIProgressViewStyleBar];// 设置UIProgressView的大小prog.frame = CGRectMake(0 , 0 , 80, 20);// 设置该进度条的初始进度为0prog.progress = 0;// 创建使用UIView的UIBarButtonItemUIBarButtonItem *bn4 = [[UIBarButtonItem alloc]initWithCustomView:prog];// 为工具条设置工具按钮myToolbar.items = [NSArray arrayWithObjects:bn1 , bn2, bn3,flexItem, bn4, nil];timer = [NSTimer scheduledTimerWithTimeInterval:0.2target:self selector:@selector(changeProgress)userInfo:nil repeats:YES];
}
- (void) clicked:(id)sender
{NSLog(@"%@", sender);
}
- (void) changeProgress
{// 如果进度满了,停止计时器if(prog.progress >= 1.0){// 停用计时器[timer invalidate];}else{// 改变进度条的进度值[prog setProgress:prog.progress + 0.02 animated:YES];}
}
@end