1.UICtontrol基类方法
定制UICongtrol外观
2.按钮控件–设置按钮不同的状态的title
设置UIButton外观
#import "ViewController.h"
@interface ViewController ()
//创建一个按钮控件
@property (weak, nonatomic) IBOutlet UIButton *myBtn;
@property (weak, nonatomic) IBOutlet UIButton *myBtnEnable;
@property (weak, nonatomic) IBOutlet UITextField *myText;
- (IBAction)disAble:(id)sender;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//设置按钮不同状态下的title
[_myBtn setTitle:@"请点我" forState:UIControlStateNormal];
[_myBtn setTitle:@"轻一点" forState:UIControlStateHighlighted];
}
- (IBAction)disAble:(id)sender {
self.myText.enabled=false;
}
@end
3.多行文本控件–通过导航按钮关闭虚拟键盘
@interface ViewController ()
//拖线创建一个多行文本控件
@property (weak, nonatomic) IBOutlet UITextView *textView;
@end
@implementation ViewController{
//导航条按钮项
UIBarButtonItem *_done;
//导航条项
UINavigationItem *_navItem;
}
- (void)viewDidLoad {
[super viewDidLoad];
//将控制器本身设置为textView控件的委托对象
self.textView.delegate=self;
//创建并添加导航条
UINavigationBar * navBar=[[UINavigationBar alloc]initWithFrame:CGRectMake(0, 50, [UIScreen mainScreen].bounds.size.width, 44)];
[self.view addSubview:navBar];
//创建导航项并设置导航项的标题
_navItem=[[UINavigationItem alloc]initWithTitle:@"导航条"];
//将导航项添加到导航条上
navBar.items=@[_navItem];
//创建一个UIBarButtonItem对象,并赋给_done成员属性
_done=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(finishEdit)];
}
-(void) textViewDidBeginEditing:(UITextView *)textView{
//为导航条设置有右边的按钮
_navItem.rightBarButtonItem=_done;
}
-(void) textViewDidEndEditing:(UITextView *)textView{
//取消导航条设置有右边的按钮
_navItem.rightBarButtonItem=nil;
}
-(void) finishEdit{
//让textView控件放弃作为第一响应者
[self.textView resignFirstResponder];
}
@end
4.多行文本控件–通过自定义键盘福建关闭虚拟键盘(在键盘上行添加一个附件)
@interface ViewController ()
//拖线创建一个多行文本控件
@property (weak, nonatomic) IBOutlet UITextView *textView;
@end
@implementation ViewController
[super viewDidLoad];
//创建一个UIToolBar工具条
UIToolbar * topView=[[UIToolbar alloc]initWithFrame: CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 40)];
//设置工具条风格
[topView setBarStyle:UIBarStyleBlack];
//为工具条创建第一个按钮
UIBarButtonItem * myBn=[[UIBarButtonItem alloc]initWithTitle:@"无动作" style:UIBarButtonItemStylePlain target:self action:nil];
//为工具条创建第二个按钮,该按钮是一块可伸缩的空白区
UIBarButtonItem * spaceBn=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:self action:nil];
//为工具条创建第一个按钮
UIBarButtonItem * doneBn=[[UIBarButtonItem alloc]initWithTitle:@"完成" style:UIBarButtonItemStyleDone target:self action:@selector(editFinished)];
//以上三个按钮创建NSArray创建NSArray集合
NSArray* buttonsArray=@[myBn,spaceBn,doneBn];
//为UIBatButton设置按钮
topView.items=buttonsArray;
//为textview关联的虚拟键盘设置附件
self.textView.inputAccessoryView=topView;
}
-(void)editFinished{
[self.textView resignFirstResponder];
}
@end
5.多行文本控件–自定义选择内容后的菜单
#import "ViewController.h"
@interface ViewController ()
//拖线创建一个多行文本控件
@property (weak, nonatomic) IBOutlet UITextView *textView;
@end
@implementation ViewController{
}
- (void)viewDidLoad {
[super viewDidLoad];
//创建两个菜单项
UIMenuItem * mailshare=[[UIMenuItem alloc]initWithTitle:@"邮件分享" action:@selector(mailShare:)];
UIMenuItem * weiboshare=[[UIMenuItem alloc]initWithTitle:@"微博分享" action:@selector(weiboShare:)];
//创建UIMenuController控制器
UIMenuController * menu=[UIMenuController sharedMenuController];
//为UIMenuController添加两个菜单项
menu.menuItems=@[mailshare,weiboshare];
}
//重写UIResponder的canPerformAction方法,当该方法返回yes时,该界面会显示action对应的控件
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender{
//如果action是mailshare或weiboshare方法
if (action==@selector(mailShare:) || action==@selector(weiboShare:) ) {
if (self.textView.selectedRange.length>0) {
return YES;
}
}
return NO;
}
-(void)mailShare:(id)sender{
NSLog(@"模拟通过邮件分享");
}
-(void)weiboShare:(id)sender{
NSLog(@"模拟通过微博分享");
}
@end
6.开关按钮UISwith
#import "ViewController.h"
@interface ViewController ()
- (IBAction)backChange:(id)sender;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (IBAction)backChange:(id)sender {
//如果开关已经打开
if ([sender isOn]==YES) {
//将应用背景颜色设置为白色
self.view.backgroundColor=[UIColor whiteColor];
}else{
//将应用背景颜色设置为黑色
self.view.backgroundColor=[UIColor blackColor];
}
}
@end
7.分段控件UIControl—使用分段控件控制背景色
#import "ViewController.h"
@interface ViewController ()
- (IBAction)segmentChange:(id)sender;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (IBAction)segmentChange:(id)sender {
switch ([sender selectedSegmentIndex]) {
case 0:
self.view.backgroundColor=[UIColor redColor];
break;
case 1:
self.view.backgroundColor=[UIColor blueColor];
break;
case 2:
self.view.backgroundColor=[UIColor greenColor];
break;
default:
break;
}
}
@end
8.分段控件UIControl—动态删减分段数量
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UISegmentedControl *segment;
- (IBAction)segmentChange:(id)sender;
@property (weak, nonatomic) IBOutlet UITextField *inputTitle;
- (IBAction)addBtn:(id)sender;
- (IBAction)removeBtn:(id)sender;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (IBAction)segmentChange:(id)sender {
switch ([sender selectedSegmentIndex]) {
case 0:
self.view.backgroundColor=[UIColor redColor];
break;
case 1:
self.view.backgroundColor=[UIColor blueColor];
break;
case 2:
self.view.backgroundColor=[UIColor greenColor];
break;
case 3:
self.view.backgroundColor=[UIColor yellowColor];
break;
default:
self.view.backgroundColor=[UIColor whiteColor];
break;
}
}
- (IBAction)removeBtn:(id)sender {
//获取分段的数量
NSUInteger count=self.segment.numberOfSegments;
//删除分段控件的最后一个分段
[self.segment removeSegmentAtIndex:count-1 animated:YES];
}
- (IBAction)addBtn:(id)sender {
//获取分段的数量
NSUInteger count=self.segment.numberOfSegments;
//获取文本框输入的字符串
NSString* title=self.inputTitle.text;
//如果用户输入的字符长度大于0
if (title.length>0) {
//以用户输入的内容插入一个分段
[self.segment insertSegmentWithTitle:title atIndex:count animated:YES];
//清空文本框内容
self.inputTitle.text=@"";
}
}
@end
9.图像控件UIImageView
10.UIIageView触控在窗口内放大显示
#import "ViewController.h"
@interface ViewController ()
- (IBAction)plus:(id)sender;
- (IBAction)minus:(id)sender;
- (IBAction)next:(id)sender;
@property (weak, nonatomic) IBOutlet UIImageView *bigImage;
@property (weak, nonatomic) IBOutlet UIImageView *smallImage;
@end
@implementation ViewController
{
//创建图形数组,当前图像,透明度三个变量
NSArray* _images;
int _currentImage;
CGFloat _alpha;
}
- (void)viewDidLoad {
[super viewDidLoad];
//设置初始值
_currentImage=0;
_alpha=1.0;
_images=@[@"11.jpeg",@"22.jpeg",@"33.jpeg",@"44.jpeg",@"55.jpeg"];
//启动大图控件的用户交互,从而允许控件能响应用户手势
self.bigImage.userInteractionEnabled=YES;
//创建一个轻击的手势检测器
UITapGestureRecognizer* singleTap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapped:)];
//为大图添加轻击手势检测器
[self.bigImage addGestureRecognizer:singleTap];
}
- (IBAction)next:(id)sender {
//控制大图显示下一张图片
self.bigImage.image=[UIImage imageNamed:_images[++_currentImage%_images.count]];
}
-(void)tapped:(UIGestureRecognizer*)gestureRecognizer{
//获取正在显示的原始位图
UIImage* srcImage=self.bigImage.image;
//获取用户手指在bigimage上的触碰点
CGPoint pt=[gestureRecognizer locationInView:self.bigImage];
//获取正在显示的原图对应的CGImageRef
CGImageRef sourceImageRef=[srcImage CGImage];
//获取图片实际大小与第一个UIimageView的缩放比例
CGFloat scale=srcImage.size.width/600;
//将大图控件上的触碰点的左边换算成原始图片上的位置
CGFloat x=pt.x*scale;
CGFloat y=pt.y*scale;
if (x+120>srcImage.size.width) {
x=srcImage.size.width-240;
}
if (y+120>srcImage.size.height) {
x=srcImage.size.height-240;
}
//调用CGImageCreateWithImageInrect函数获取sourceIamge中指定区域的图片
CGImageRef newImageRef=CGImageCreateWithImageInRect(sourceImageRef, CGRectMake(x, y, 240, 240));
//让小图控件显示newImageRef对应的图片
self.smallImage.image=[UIImage imageWithCGImage:newImageRef];
}
- (IBAction)minus:(id)sender {
_alpha-=0.2;
//如果超过1则设为1
if (_alpha<=0) {
_alpha=0;
}
self.bigImage.alpha=_alpha;
}
- (IBAction)plus:(id)sender {
_alpha+=0.2;
//如果超过1则设为1
if (_alpha>=1.0) {
_alpha=1;
}
self.bigImage.alpha=_alpha;
}
@end
11.UIIageView幻灯片播放器
为了让UIImageView以动画方式显示出多张图片,只要为该UIImageView的animationImages属性赋一个NSArray集合,接下来设置与动画相关的一些属性,在调用UIImageView的startAnimating方法开始播放动画即可
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *bigImage;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//创建一个nsArray集合,集合元素都为UIIamge对象
NSArray* images=[NSArray arrayWithObjects:
[UIImage imageNamed:@"11.jpeg"],
[UIImage imageNamed:@"22.jpeg"],
[UIImage imageNamed:@"33.jpeg"],
[UIImage imageNamed:@"44.jpeg"],
[UIImage imageNamed:@"55.jpeg"],
nil];
//设置大图控件需要动画显示的图片为image集合元素
self.bigImage.animationImages=images;
self.bigImage.animationDuration=12;//设置动画持续时间
self.bigImage.animationRepeatCount=999999;//动画循环播放次数
[self.bigImage startAnimating];//让图形控件开始播放动画
}
@end