【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