一.UIPikerView的属性
1. numberOfComponents:返回UIPickerView当前的列数
NSIntegernum =_pickerView.numberOfComponents;
NSLog(@"%d", num);
2. -(NSInteger)numberOfRowsInComponent:(NSInteger)component; 返回component列中有多少行。
NSIntegernumInCp = [_pickerViewnumberOfRowsInComponent:0];
NSLog(@"%d",numInCp);
3. - (CGSize)rowSizeForComponent:(NSInteger)component;返回component中一行的尺寸。
CGSizesize = [_pickerViewrowSizeForComponent:0];
NSLog(@"%@",NSStringFromCGSize(size));
2.0 设置UIPickerView代理
_pickerView.delegate=self;
//设置UIPickView每行显示的内容
2.1 - (NSString*)pickerView:(UIPickerView*)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return@"showData";
}
2.2 - (UIView*)pickerView:(UIPickerView*)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView*)view;
// 返回一个视图,用来设置pickerView的每行显示的内容。
-(UIView*)pickerView:(UIPickerView*)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView*)view
{
UIView*myView=[[UIViewalloc]init];
myView.backgroundColor= [UIColorredColor];
returnmyView;
}
效果:
#pragma mark -dataSource method
//设置每列显示3行
- (NSInteger)pickerView:(UIPickerView*)pickerViewnumberOfRowsInComponent:(NSInteger)component
{
return3;
}
//设置显示2列
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView
{
return2;
}
4. showsSelectionIndicator:是否显示指示器,默认为NO
_pickerView.showsSelectionIndicator=NO;
注意:设置UIPickerView的行数与列数需要设置数据源,遵守UIPickerViewDataSource,设置UIPickerView的内容需要设置代理,并且遵守代理方法UIPickerViewDelegate。
当点击UIPickerView的某一列中某一行的时候,就会调用这个方法。
- (CGFloat)pickerView:(UIPickerView*)pickerView
rowHeightForComponent:(NSInteger)component;
一旦调用了这个方法,就会重新给数据源发送消息计算这列的行数、重新给代理发送消息获得这列的内容
[pickerViewreloadComponent:1];
- (void)reloadAllComponents;
-(NSInteger)selectedRowInComponent:(NSInteger)component;
1. numberOfPages // 设置有多少页 默认为0
// 2)设置页数
[pageControlsetNumberOfPages:kImageCount];
[pageControlsetCurrentPage:0];
3. pageIndicatorTintColor // 设置页码指示器颜色
[pageControlsetPageIndicatorTintColor:[UIColorblackColor]];
4. currentPageIndicatorTintColor// 设置当前页码指示器颜色
[pageControlsetCurrentPageIndicatorTintColor:[UIColorredColor]];
5.添加分页控件的监听事件(监听值改变事件)
[pageControladdTarget:selfaction:@selector(pageChanged:)forControlEvents:UIControlEventValueChanged];
UIImageView*_imageView = [[UIImageViewalloc]init];
_imageView.image= [UIImageimageNamed:@"me.png"];
2.highlightedImage 设置高亮状态下显示的图片
_imageView.highlightedImage= [UIImageimageNamed:@"other.png"];
3.animationImages 设置序列帧动画的图片数组
[_imageViewsetAnimationImages:[NSArrayarray]];
4.highlightedAnimationImages设置高亮状态下序列帧动画的图片数组
[_imageViewsetHighlightedAnimationImages:[NSArrayarray]];
5.animationDuration 设置序列帧动画播放的时常
[_imageViewsetAnimationDuration:0.3f];
6.animationRepeatCount 设置序列帧动画播放的次数
[_imageViewsetAnimationRepeatCount:2];
7.userInteractionEnabled设置是否允许用户交互,默认不允许用户交互
[_imageViewsetUserInteractionEnabled:YES];
8.highlighted 设置是否为高亮状态,默认为普通状态
_imageView.highlightedImage= [UIImageimageNamed:@"other.png"];
[_imageViewsetHighlighted:YES];
注意的是在highlighted状态下设置的图片与序列帧动画要显示,必须同时设置UIImageView的状态为highlighted。
1.+(BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType; 检查指定源是否在设备上可用。
//检查照片源是否可用
[UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]2.allowsEditing 默认NO
是否允许编辑
允许编辑.
[imagePickersetAllowsEditing:YES];
设置UIImagePicker的最大视频持续时间.默认10分钟
4. + availableMediaTypesForSourceType: // 指定源可用的媒体种类
//获得相机模式下支持的媒体类型
NSArray*availableMediaTypes = [UIImagePickerControlleravailableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];
设置UIImagePicker照片源类型,默认有3种。
照片源类型
UIImagePickerControllerSourceTypeCamera照相机
UIImagePickerControllerSourceTypePhotoLibrary照片库(通过同步存放的,用户不能删除)
UIImagePickerControllerSourceTypeSavedPhotosAlbum保存的照片(通过拍照或者截屏保存的,用户可以删除)
检查指定源是否可用.isSourceTypeAvailable:方法.
检查可用媒体(视频还是只能是图片)availableMediaTypesForSourceType:方法.
设置界面媒体属性mediaTypes property.
显示界面使用presentViewController:animated:completion:方法.iPad中是popover形式.需要确保sourceType有效.
相关操作,移除视图.
如果想创建一个完全自定义界面的imagepicker来浏览图片,使用 AssetsLibrary Framework Reference中的类. (AV Foundation Programming Guide 中的 “MediaCapture and Access to Camera” )
+ availableMediaTypesForSourceType: // 指定源可用的媒体种类
+ isSourceTypeAvailable: // 指定源是否在设备上可用
sourceType
// 运行相关接口前需要指明源类型.必须有效,否则抛出异常. picker已经显示的时候改变这个值,picker会相应改变来适应.默认UIImagePickerControllerSourceTypePhotoLibrary.
allowsEditing //是否可编辑
delegate
mediaTypes
// 指示picker中显示的媒体类型.设置每种类型之前应用availableMediaTypesForSourceType:检查一下.如果为空或者array中类型都不可用,会发生异常.默认kUTTypeImage, 只能显示图片.
videoQuality //视频拍摄选取时的编码质量.只有mediaTypes包含kUTTypeMovie时有效.
videoMaximumDuration //秒,video最大记录时间,默认10分钟.只用当mediaTypes包含kUTTypeMovie时有效.
showsCameraControls
// 指示 picker 是否显示默认的cameracontrols.默认是YES,设置成NO隐藏默认的controls来使用自定义的overlayview.(从而可以实现多选而不是选一张picker就dismiss了).只有UIImagePickerControllerSourceTypeCamera源有效,否则NSInvalidArgumentException异常.
cameraOverlayView
//自定义的用于显示在picker之上的view.只有当源是UIImagePickerControllerSourceTypeCamera时有效.其他时候使用抛出NSInvalidArgumentException异常.
cameraViewTransform
//预先动画.只影响预先图像,对自定义的overlayview和默认的picker无效.只用当picker的源是UIImagePickerControllerSourceTypeCamera时有效,否则NSInvalidArgumentException异常.
– takePicture
//使用摄像头选取一个图片。自定义overlay可以多选。已经有图片正在选取是调用无效,必须要等delegate收到imagePickerController:didFinishPickingMediaWithInfo:消息后才能再次选取。非UIImagePickerControllerSourceTypeCamera源会导致异常。
– startVideoCapture
– stopVideoCapture
//结束视频选取,之后系统调用delegate的imagePickerController:didFinishPickingMediaWithInfo:方法。
cameraDevice //使用的镜头(默认后置的)
+ isCameraDeviceAvailable: // 摄像设备是否可用.
+ availableCaptureModesForCameraDevice: // 设备可用的选取模式
cameraCaptureMode //相机捕获模式
cameraFlashMode //闪光灯模式(默认自动)
+ isFlashAvailableForCameraDevice: // 是否有闪光能力
13.UIImagePickerControllerDelegate
使用UIImageWriteToSavedPhotosAlbum保存图像,UISaveVideoAtPathToSavedPhotosAlbum保存视频. 4.0后使用writeImageToSavedPhotosAlbum:metadata:completionBlock:保存元数据.
- (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
//包含选择的图片或者一个视频的URL,详见“EditingInformation Keys.”
//如果是设置可编辑属性,那么picker会预显示选中的媒体,编辑后的与初始的都会保存在info中.
– imagePickerControllerDidCancel:
– imagePickerController:didFinishPickingImage:editingInfo://DeprecatediniOS3.0
NSString *const UIImagePickerControllerMediaType;// 媒体类型
NSString *const UIImagePickerControllerOriginalImage;// 原始未编辑的图像
NSString *const UIImagePickerControllerEditedImage;// 编辑后的图像
NSString *const UIImagePickerControllerCropRect;// 源图像可编辑(有效?)区域
NSString *const UIImagePickerControllerMediaURL;// 视频的路径
NSString *const UIImagePickerControllerReferenceURL;// 原始选择项的URL
NSString *const UIImagePickerControllerMediaMetadata;// 只有在使用摄像头并且是图像类型的时候有效.包含选择图像信息的字典类型
14. UIImagePickerController小例子
UIImagePickerController的代理需要遵守这两个协议.
#pragma mark选择照片
- (void)selectPhoto
{
// 1.首先判断照片源是否可用
if([UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
// 0)实例化控制器
UIImagePickerController*picker = [[UIImagePickerControlleralloc]init];
// 1)设置照片源
[pickersetSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
// 2)设置允许修改
[pickersetAllowsEditing:YES];
// 3)设置代理
[pickersetDelegate:self];
// 4)显示控制器
[selfpresentViewController:pickeranimated:YEScompletion:nil];
}else{
NSLog(@"照片源不可用");
}
}
#pragma mark - imagePicker代理方法
- (void)imagePickerController:(UIImagePickerController*)pickerdidFinishPickingMediaWithInfo:(NSDictionary*)info
{
UIImage*image = info[@"UIImagePickerControllerEditedImage"];
[_imageButtonsetImage:imageforState:UIControlStateNormal];
//关闭照片选择器
[selfdismissViewControllerAnimated:YEScompletion:nil];
//需要将照片保存至应用程序沙箱,由于涉及到数据存储,同时与界面无关
//可以使用多线程来保存图像
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
//保存图像
// 1.取图像路径
NSArray*docs =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString*imagePath = [docs[0]stringByAppendingPathComponent:@"abc.png"];
// 2.转换成NSData保存
NSData*imageData =UIImagePNGRepresentation(image);
[imageDatawriteToFile:imagePathatomically:YES];
});
}
设置DatePicker的地区,即设置DatePicker显示的语言。
// 1.跟踪所有可用的地区,取出想要的地区
NSLog(@"%@", [NSLocaleavailableLocaleIdentifiers]);
// 2.设置日期选择控件的地区
[datePickersetLocale:[[NSLocale
alloc]initWithLocaleIdentifier:@"zh_Hans_CN"]];
效果:
// 2)设置日期选择控件的地区
[datePickersetLocale:[[NSLocalealloc]initWithLocaleIdentifier:@"en_SC"]];
效果:
设置DatePicker的日历。
默认为当天。
[datePickersetCalendar:[NSCalendarcurrentCalendar]];
设置DatePicker的时区。
默认为设置为:[datePickersetTimeZone:[NSTimeZonedefaultTimeZone]];
设置DatePicker的日期。
默认设置为: [datePickersetDate:[NSDatedate]];
设置DatePicker的允许的最小日期。
设置DatePicker的允许的最大日期。
设置DatePicker的倒计时间.
// 1)设置日期选择的模
[self.datePickersetDatePickerMode:UIDatePickerModeCountDownTimer];
// 2)设置倒计时的时长
//注意:设置倒计时时长需要在确定模式之后指定
//倒计时的时长,以秒为单位
[self.datePickersetCountDownDuration:10*60];
效果:
你可以将分钟表盘设置为以不同的时间间隔来显示分钟,前提是该间隔要能够让60整除。默认间隔是一分钟。如果要使用不同的间隔,需要改变 minuteInterval属性:
//设置分钟间隔
datePicker.minuteInterval=15;
9.1
UIDatePickerModeTime,//Displays hour, minute, and optionally AM/PM designation depending on the localesetting (e.g. 6 | 53 | PM)
显示小时,分钟和AM/PM,这个的名称是根据本地设置的
[datePickersetDatePickerMode:UIDatePickerModeTime];
效果图:
9.2
UIDatePickerModeDate,// Displays month, day, and year depending on the locale setting (e.g.November | 15 | 2007)
显示年月日,名称根据本地设置的
[datePickersetDatePickerMode:UIDatePickerModeDate];
效果图:
9.3 默认是显示这种模式
UIDatePickerModeDateAndTime,// Displays date, hour, minute, and optionally AM/PMdesignation depending on the locale setting (e.g. Wed Nov 15 | 6 | 53 | PM)
显示日期,小时,分钟,和AM/PM,名称是根据本地设置的
[datePickersetDatePickerMode:UIDatePickerModeDateAndTime];
效果图:
9.4
UIDatePickerModeCountDownTimer// Displays hour and minute (e.g. 1 | 53)
显示小时和分钟
[datePickersetDatePickerMode:UIDatePickerModeCountDownTimer];
//不用设置宽高,因为它的宽高是固定的
UIDatePicker*datePicker = [[UIDatePickeralloc]init];
//设置区域为中国简体中文
datePicker.locale= [[NSLocale alloc]
initWithLocaleIdentifier:@"zh_CN"];
//设置picker的显示模式:只显示日期
datePicker.datePickerMode =UIDatePickerModeDate;
[datePickeraddTarget:selfaction:@selector(dateChange:)
forControlEvents:UIControlEventValueChanged];
你可以通过设置mininumDate和 maxinumDate 属性,来指定使用的日期范围。如果用户试图滚动到超出这一范围的日期,表盘会回滚到最近的有效日期。两个方法都需要NSDate 对象作参数:
1.NSDate* minDate = [[NSDate alloc]initWithString:@"1900-01-01 00:00:00 -0500"];
2.NSDate* maxDate = [[NSDate alloc]initWithString:@"2099-01-01 00:00:00 -0500"];
3.
4.datePicker.minimumDate = minDate;
5.datePicker.maximumDate = maxDate;
11.2 如果两个日期范围属性中任何一个未被设置,则默认行为将会允许用户选择过去或未来的任意日期。这在某些情况下很有用处,比如,当选择生日时,可以是过去的任意日期,但终止与当前日期。如果你希望设置默认显示的日期,可以使用date属性:
1.datePicker.date = minDate;
11.3 此外,你还可以用 setDate 方法。如果选择了使用动画,则表盘会滚动到你指定的日期:
1.[ datePicker setDate:maxDate animated:YES];
设置指示器的样式
UIActivityIndicatorViewStyleWhiteLarge
UIActivityIndicatorViewStyleWhite (默认样式)
UIActivityIndicatorViewStyleGray
当停止动画的时候,是否隐藏。默认为YES。
-(id)initWithActivityIndicatorStyle:(UIActivityIndicatorViewStyle)style;
- (void)startAnimating;
- (void)stopAnimating;
- (BOOL)isAnimating;
7. UIActivityIndicatorView使用注意
7.2 必须调用startAnimating才会显示UIActivityIndicatorView
//初始化指示器
UIActivityIndicatorView*indicator = [[UIActivityIndicatorViewalloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
//设置指示器位置
indicator.center=CGPointMake(self.view.frame.size.width*0.5,self.view.frame.size.height*0.5);
//开启动画,必须调用,否则无法显示
[indicatorstartAnimating];
[self.viewaddSubview:indicator];
1.NSKernAttributeName: @10 调整字句 kerning 字句调整
2.NSFontAttributeName: [UIFont systemFontOfSize:_fontSize] 设置字体
3.NSForegroundColorAttributeName:[UIColor redColor] 设置文字颜色
4.NSParagraphStyleAttributeName: paragraph 设置段落样式
5.NSMutableParagraphStyle*paragraph = [[NSMutableParagraphStyle alloc] init];
paragraph.alignment= NSTextAlignmentCenter;
6.NSBackgroundColorAttributeName:[UIColor blackColor] 设置背景颜色
7.NSStrokeColorAttributeName设置文字描边颜色,需要和NSStrokeWidthAttributeName设置描边宽度,这样就能使文字空心.
NSStrokeWidthAttributeName这个属性所对应的值是一个 NSNumber 对象(小数)。该值改变描边宽度(相对于字体size 的百分比)。默认为 0,即不改变。正数只改变描边宽度。负数同时改变文字的描边和填充宽度。例如,对于常见的空心字,这个值通常为3.0。
同时设置了空心的两个属性,并且NSStrokeWidthAttributeName属性设置为整数,文字前景色就无效果了
效果:
效果:
8. NSStrikethroughStyleAttributeName 添加删除线,strikethrough删除线
效果:
9. NSUnderlineStyleAttributeName 添加下划线
效果:
10. NSShadowAttributeName 设置阴影,单独设置不好使,必须和其他属性搭配才好使。
和这三个任一个都好使,NSVerticalGlyphFormAttributeName,NSObliquenessAttributeName,NSExpansionAttributeName
11.NSVerticalGlyphFormAttributeName
该属性所对应的值是一个 NSNumber 对象(整数)。0 表示横排文本。1 表示竖排文本。在 iOS 中,总是使用横排文本,0 以外的值都未定义。
效果:
12. NSObliquenessAttributeName设置字体倾斜。Skew斜
效果: