iOS基础之OC简单控件知识了解(三)

一.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.     delegate:

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;

}

效果:

3.     dataSource:数据源

#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。

5.-(void)pickerView:(UIPickerView*)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component;

当点击UIPickerView的某一列中某一行的时候,就会调用这个方法。

6. 返回第component列每一行的高度

- (CGFloat)pickerView:(UIPickerView*)pickerView

rowHeightForComponent:(NSInteger)component;

7.刷新某一列的数据

一旦调用了这个方法,就会重新给数据源发送消息计算这列的行数、重新给代理发送消息获得这列的内容

[pickerViewreloadComponent:1];

8. 刷新所有列的数据

- (void)reloadAllComponents;

9. 返回选中的是第component列的第几行。

-(NSInteger)selectedRowInComponent:(NSInteger)component;

二.UIPageControl

1.     numberOfPages // 设置有多少页 默认为0

// 2)设置页数

[pageControlsetNumberOfPages:kImageCount];

2.     currentPage  // 设置当前页

[pageControlsetCurrentPage:0];

3.     pageIndicatorTintColor // 设置页码指示器颜色

[pageControlsetPageIndicatorTintColor:[UIColorblackColor]];

4.     currentPageIndicatorTintColor// 设置当前页码指示器颜色

[pageControlsetCurrentPageIndicatorTintColor:[UIColorredColor]];

5.添加分页控件的监听事件(监听值改变事件)

[pageControladdTarget:selfaction:@selector(pageChanged:)forControlEvents:UIControlEventValueChanged];

三.UIImageView属性

1.Image 设置图片,默认显示

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。

四.UIImagePickerController

1.+(BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType;                 检查指定源是否在设备上可用。

//检查照片源是否可用

[UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]2.allowsEditing 默认NO

是否允许编辑

允许编辑.

[imagePickersetAllowsEditing:YES];

3. videoMaximumDuration

设置UIImagePicker的最大视频持续时间.默认10分钟

4. + availableMediaTypesForSourceType: // 指定源可用的媒体种类

//获得相机模式下支持的媒体类型

NSArray*availableMediaTypes = [UIImagePickerControlleravailableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];

5. sourceType

设置UIImagePicker照片源类型,默认有3种。

照片源类型

UIImagePickerControllerSourceTypeCamera照相机

UIImagePickerControllerSourceTypePhotoLibrary照片库(通过同步存放的,用户不能删除)

UIImagePickerControllerSourceTypeSavedPhotosAlbum保存的照片(通过拍照或者截屏保存的,用户可以删除)

6.UIImagePicker使用步骤:

检查指定源是否可用.isSourceTypeAvailable:方法.

检查可用媒体(视频还是只能是图片)availableMediaTypesForSourceType:方法.

设置界面媒体属性mediaTypes property.

显示界面使用presentViewController:animated:completion:方法.iPad中是popover形式.需要确保sourceType有效.

相关操作,移除视图.

如果想创建一个完全自定义界面的imagepicker来浏览图片,使用 AssetsLibrary Framework Reference中的类. (AV Foundation Programming Guide 中的 “MediaCapture and Access to Camera” )

7.设置源

+ availableMediaTypesForSourceType: // 指定源可用的媒体种类

+ isSourceTypeAvailable: // 指定源是否在设备上可用

sourceType

// 运行相关接口前需要指明源类型.必须有效,否则抛出异常. picker已经显示的时候改变这个值,picker会相应改变来适应.默认UIImagePickerControllerSourceTypePhotoLibrary.

8.设置picker属性

allowsEditing //是否可编辑

delegate

mediaTypes

// 指示picker中显示的媒体类型.设置每种类型之前应用availableMediaTypesForSourceType:检查一下.如果为空或者array中类型都不可用,会发生异常.默认kUTTypeImage, 只能显示图片.

9.video选取参数

videoQuality //视频拍摄选取时的编码质量.只有mediaTypes包含kUTTypeMovie时有效.

videoMaximumDuration //秒,video最大记录时间,默认10分钟.只用当mediaTypes包含kUTTypeMovie时有效.

10.自定义界面

showsCameraControls

// 指示 picker 是否显示默认的cameracontrols.默认是YES,设置成NO隐藏默认的controls来使用自定义的overlayview.(从而可以实现多选而不是选一张picker就dismiss了).只有UIImagePickerControllerSourceTypeCamera源有效,否则NSInvalidArgumentException异常.

cameraOverlayView

//自定义的用于显示在picker之上的view.只有当源是UIImagePickerControllerSourceTypeCamera时有效.其他时候使用抛出NSInvalidArgumentException异常.

cameraViewTransform

//预先动画.只影响预先图像,对自定义的overlayview和默认的picker无效.只用当picker的源是UIImagePickerControllerSourceTypeCamera时有效,否则NSInvalidArgumentException异常.

11.选取媒体

– takePicture

//使用摄像头选取一个图片。自定义overlay可以多选。已经有图片正在选取是调用无效,必须要等delegate收到imagePickerController:didFinishPickingMediaWithInfo:消息后才能再次选取。非UIImagePickerControllerSourceTypeCamera源会导致异常。

– startVideoCapture

– stopVideoCapture

//结束视频选取,之后系统调用delegate的imagePickerController:didFinishPickingMediaWithInfo:方法。

12.设置摄像头

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];

});

}

五.UIDatePicker

1. Locale

设置DatePicker的地区,即设置DatePicker显示的语言。

// 1.跟踪所有可用的地区,取出想要的地区

NSLog(@"%@", [NSLocaleavailableLocaleIdentifiers]);

// 2.设置日期选择控件的地区

[datePickersetLocale:[[NSLocale

alloc]initWithLocaleIdentifier:@"zh_Hans_CN"]];

效果:

// 2)设置日期选择控件的地区

[datePickersetLocale:[[NSLocalealloc]initWithLocaleIdentifier:@"en_SC"]];

效果:

2. Calendar

设置DatePicker的日历。

默认为当天。

[datePickersetCalendar:[NSCalendarcurrentCalendar]];

3. timeZone

设置DatePicker的时区。

默认为设置为:[datePickersetTimeZone:[NSTimeZonedefaultTimeZone]];

4. date

设置DatePicker的日期。

默认设置为: [datePickersetDate:[NSDatedate]];

5. minimumDate

设置DatePicker的允许的最小日期。

6. maximumDate

设置DatePicker的允许的最大日期。

7. countDownDuration

设置DatePicker的倒计时间.

// 1)设置日期选择的模

[self.datePickersetDatePickerMode:UIDatePickerModeCountDownTimer];

// 2)设置倒计时的时长

//注意:设置倒计时时长需要在确定模式之后指定

//倒计时的时长,以秒为单位

[self.datePickersetCountDownDuration:10*60];

效果:

8. minuteInterval

你可以将分钟表盘设置为以不同的时间间隔来显示分钟,前提是该间隔要能够让60整除。默认间隔是一分钟。如果要使用不同的间隔,需要改变 minuteInterval属性:

//设置分钟间隔

datePicker.minuteInterval=15;

9. datePickerMode

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];

10. UIDatePicker使用教程一。

10.1初始化

//不用设置宽高,因为它的宽高是固定的

UIDatePicker*datePicker = [[UIDatePickeralloc]init];

10.2常用设置

//设置区域为中国简体中文

datePicker.locale= [[NSLocale alloc]

initWithLocaleIdentifier:@"zh_CN"];

//设置picker的显示模式:只显示日期

datePicker.datePickerMode =UIDatePickerModeDate;

10.3UIDatePicker需要监听值的改变

[datePickeraddTarget:selfaction:@selector(dateChange:)

forControlEvents:UIControlEventValueChanged];

11.UIDatePicker使用教程二。

11.1日期范围

你可以通过设置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];

六.UIActivityIndicatorView

1.     activityIndicatorViewStyle

设置指示器的样式

UIActivityIndicatorViewStyleWhiteLarge

UIActivityIndicatorViewStyleWhite  (默认样式)

UIActivityIndicatorViewStyleGray

2.hidesWhenStopped

当停止动画的时候,是否隐藏。默认为YES。

3. 实例化指示器对象,根据样式设置尺寸,不需要手动设置。

-(id)initWithActivityIndicatorStyle:(UIActivityIndicatorViewStyle)style;

4.开启动画

- (void)startAnimating;

5.关闭动画

- (void)stopAnimating;

6.是否在动画

- (BOOL)isAnimating;

7. UIActivityIndicatorView使用注意

7.1初始化的时候不需要设置尺寸,设置尺寸也没有效果。

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];

七.文本属性Attributes

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斜

效果:

13. NSExpansionAttributeName 设置文本扁平化

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容