OC学习笔记之010IOS应用开发入门--控件1按钮、文本、开关、分段、图像

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

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值