iOS UI基础学习 Note_dayTwo

寒假至今才出去一天和最好的朋友吃吃吃 然后就得继续回来学习
嗯…我可能过了一个假的寒假

昨天深入的学习了UITextField..UILabel..UIImage..利用UIImageView和UIToolBar 生成一个毛玻璃的背景..利用UIImageView和NSMutableArray创建动画 以及AVFoundation/AVFoundation.h中的AVplayer

UILabel&UITextField

利用UIButton UILabel UITextField 做一个简易的加法计算器demo
核心代码:

- (IBAction)getResult {
    NSString *num1 = self.numberOne.text;
    NSString *num2 = self.numberTwo.text;
     //用两个字符串 num1和num2监听两个TextField用户所输入的 
 //数值
    if (num1.length ==0 ||num2.length ==0) {
        UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"缺少输入数字" message:@"请补充完全部数字" preferredStyle:UIAlertControllerStyleAlert];
        [alertController addAction:[UIAlertAction actionWithTitle:@"我知道了" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
            nil;
        }]];
/*UIAlertController 是一个弹窗的方法.alertControllerWithTitle是弹窗的标题 message是弹窗的内容
addAction:则是添加一个按钮.该方法是通过阅读其他博客所学的
*/
        [self presentViewController:alertController animated:YES completion:nil];
//当前页面添加创建的弹窗对象
    }

    int res = [num1 intValue] + [num2 intValue];
    self.result.text = [NSString stringWithFormat:@"%d",res];
}
  • demo截图
    dayTwo01

dayTwo02

  • 虚拟键盘
    在UITextField控件的显示属性检查器中有一个是Keyboard Type 可以选择虚拟键盘的类型 然后在模拟器中通过command+K调出虚拟键盘

UIImage&UIToolBar

  • 利用这三个类通过代码创建一个毛玻璃效果的demo,把图片加载到Assets.xcassets中,核心代码如下:
- (void)viewDidLoad {
    [super viewDidLoad];
    [self ImageView];
}
- (void)ImageView{
    UIImage *image = [UIImage imageNamed:@"timg"];
//创建一个UIImage对象,获取到一张图片
    UIImageView *imageView = [[UIImageView alloc]initWithImage:image];
//创建一个UIImageView对象,将获取到的照片传给画布
    imageView.frame = self.view.bounds;
//设置画布的位置和尺寸,此处设置为与屏幕同宽高
    imageView.backgroundColor = [UIColor redColor];
//设置背景颜色
    imageView.contentMode = UIViewContentModeScaleAspectFill;
//设置显示模式,此处为按比例填充
    imageView.clipsToBounds = YES;
//裁剪掉多余的部分
    [self.view addSubview:imageView];
//添加到View中
    [self toorbar];
}

-(void)toorbar{
//利用UIToolBar制作毛玻璃效果背景
    UIToolbar *toolbar = [[UIToolbar alloc]initWithFrame:self.view.bounds];
//初始化并设置位置和尺寸
    toolbar.barStyle = UIBarStyleBlack ;
//显示样式
    toolbar.alpha = 0.9f;
//alpha是透明度
    [self.view addSubview:toolbar];
//添加到View 
}
  • demo截图

    • 原图
      dayTwo03

    • 效果图
      dayTwo04

AVPlayer

想用AVPlayer需要调用头文件AVFoundation/AVFoundation.h
在上面的demo的基础上通过修改变量和添加控件制作一个简易播放器的demo,核心代码如下:

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageview;
@property (nonatomic, strong) AVPlayer *player;
//创建一个AVPlayer的全局变量对象
@end

@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    [self groundGlass];
    [self playwithitem];
}

-(void)playwithitem{
    NSURL *url = [[NSBundle mainBundle]URLForResource:@"mySong1.mp3" withExtension:nil];
    AVPlayerItem *item = [AVPlayerItem playerItemWithURL:url];
    self.player = [[AVPlayer alloc]initWithPlayerItem:item];
/*
创建一个AVPlayerItem对象并读取音乐文文件
初始化AVPlayer 传入AVPlayerItem对象获取的文件文件 并赋值给全局变量对象
*/
}

(IBAction)nextOrLast:(UIButton *)sender {
// 通过4个按键 关联2个代码块 通过各自的Tag来区别各自的功能
    NSString *musicName = nil;
    switch (sender.tag) {
        case 1: 
            musicName = @"mySong2.mp3";
            break;
//上一首
        case 4:
            musicName = @"mySong3.mp3";
            break;
//下一首
        default:
            break;
    }
    NSURL *url = [[NSBundle mainBundle]URLForResource:musicName withExtension:nil];
    AVPlayerItem *item = [AVPlayerItem playerItemWithURL:url];
//获取上一首或下一首的歌名并传入AVPlayerItem对象
    [self.player replaceCurrentItemWithPlayerItem:item];
//将获取到歌名的AVPlayerItem对象传给更换歌曲的方法
    [self.player play];
//播放音乐
}

- (IBAction)playOrPause:(UIButton *)sender {
    switch (sender.tag) {
        case 2:
            [self.player pause];
            break;
//暂停
        case 3:
            [self.player play];
            break;
//播放
        default:
            break;
    }
}
@end
  • demo截图
    dayTwo05

通过AVPlayer的学习,我学到一种写OC代码的方法:就是缺啥补啥法
例如

   AVPlayer *palyer1 = [AVPlayer alloc]initWithPlayerItem:<#(nullable AVPlayerItem *)#>]
/*
上面代码需要你传入一个AVPlayerItem的对象,这个时候我们就创建一个AVPlayerItem的对象
*/
AVPlayerItem *item =[AVPlayerItem playerItemWithURL:<#(nonnull NSURL *)#>]
/*
上面代码需要你传入一个XVPlayerItem的对象,这个时候我们就创建一个NSURL的对象
*/
...
/*
反正 需要我们传入什么 我们除了可以commond 点击类名去查找方法
还可以通过上述方法编写代码
*/

UIImage&NSMutableArray 创建帧动画 及<内存管理>

通过UIImage..NSMutableArray类来制作一个简易拳皇的帧动画demo
核心代码如下:

- (void)loadingWithCount:(int)count andName:(NSString *)name andDuration:(NSTimeInterval)duration andRepeatCount:(int)Rcount{
    NSMutableArray <UIImage *> *imageArr = [[NSMutableArray alloc]init];
 //创建一个具有<UIImage *>协议的可变数组来接收所有图片
    for (int i = 0; i < count; ++i) {
        NSString *path = [[NSBundle mainBundle]pathForResource:[NSString stringWithFormat:@"%@_%d",name,i+1] ofType:@"png"];
        UIImage *image = [UIImage imageWithContentsOfFile:path];
        [imageArr addObject:image];
//将遍历出来的图片传入图片可变数组
    }
    self.imageView.animationImages = imageArr;
//将图片数组赋值给动画播放图片
    self.imageView.contentMode = UIViewContentModeScaleAspectFit;
    self.imageView.animationRepeatCount =Rcount;
//播放次数
    self.imageView.animationDuration = duration;
//播放时长
    [self.imageView startAnimating];
//开始播放

- (IBAction)Mid{
    [self loadingWithCount:39 andName:@"xiaozhao3" andDuration:2.4f andRepeatCount:1];
}

- (IBAction)Max{
    [self loadingWithCount:87 andName:@"dazhao" andDuration:5.8f andRepeatCount:1];
}    

- (void)initalization
{
    [self loadingWithCount:9 andName:@"stand" andDuration:0.6 andRepeatCount:0];
}
- demo截图
![dayTwo06](http://img.blog.csdn.net/20170202113807708?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvR2VyaGFydA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
  • 内存管理
//这里与之前的传入图片方法有所不同之前是用了
 UIImage *image = [UIImage imageNamed:@"xxx"]
//而这里用的是
        NSString *path = [[NSBundle mainBundle]pathForResource:[NSString stringWithFormat:@"%@_%d",name,i+1] ofType:@"png"];
        UIImage *image = [UIImage imageWithContentsOfFile:path];
/*
图片也不是传入到Assets.xcassets,而是加载到Supporting Files
这样做的好处是当把强指针赋值为nil时,会释放掉当前对象的运行内存
而用 UIImage *image = [UIImage imageNamed:@"xxx"]并把图片放置Assets.xcassets会生成一个Assets.car,即使你把强指针赋值为nil,占用内存依旧没有变化
*/

以上是第二天的学习,如果有什么疑问或者错误以及宝贵的意见欢迎提出,吃个午饭继续第三天的学习,嘿嘿嘿.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值