博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS开发基础知识--碎片25
阅读量:5292 次
发布时间:2019-06-14

本文共 7113 字,大约阅读时间需要 23 分钟。

1:使用@protocol实现delegate和datasource模式

#import 
@protocol MyViewDataSource,MyViewDelegate;@interface myView : UIView
@property(nonatomic,assign)id
myViewDelegate;@property(nonatomic,assign)id
myViewDataSource;-(void)myShowAlert;@end@protocol MyViewDelegate
@optional-(void)alertDidPop:(myView *)myView;-(void)alertConfirmShow:(myView *)myView clickedButtonAtIndex:(NSInteger)buttonIndex;@end@protocol MyViewDataSource
@optional-(NSString *)textOfAlert:(myView *)myView;@required- (NSUInteger)numberOfItemsInMyView:(myView *)myView;@required@end
#import "myView.h"@implementation myView-(void)myShowAlert{    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"测试实例"                                                    message:@"message"                                                   delegate:self                                          cancelButtonTitle:@"取消"                                          otherButtonTitles:@"确定",nil];    alert.message = [self.myViewDataSource textOfAlert:self];    [alert show];}- (void)didPresentAlertView:(UIAlertView *)alertView{    [self.myViewDelegate alertDidPop:self];}-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{    [self.myViewDelegate alertConfirmShow:self clickedButtonAtIndex:buttonIndex];}@end

使用方式:

#import "myView.h"@interface ViewController ()
@end
- (void)viewDidLoad {    [super viewDidLoad];        myView *myVw = [[myView alloc]initWithFrame:CGRectMake(0, 0, 320, 460)];    myVw.myViewDataSource = self;    myVw.myViewDelegate = self;    [self.view addSubview:myVw];    [myVw myShowAlert];}
代理实现的方法:- (void)alertDidPop:(UIView *)myView{    myView.backgroundColor = [UIColor yellowColor];}-(NSString *)textOfAlert:(myView *)myView{    return @"信息";}-(void)alertConfirmShow:(myView *)myView clickedButtonAtIndex:(NSInteger)buttonIndex{    NSLog(@"你选中了%d",buttonIndex);}

 2:动画 UIView animateWithDuration 使用详解

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion

duration为动画持续的时间。animations为动画效果的代码块

可设动作属性:

  • frame
  • bounds
  • center
  • transform
  • alpha
  • backgroundColor
  • contentStretch

例如一个视图淡出屏幕,另外一个视图出现的代码

[UIView animateWithDuration:1.0 animations:^{        firstView.alpha = 0.0;        secondView.alpha = 1.0;}];

连续动画(可以在completion代码块中添加动画):

[UIView animateWithDuration:2.0                 animations:^{                     oldImageView.alpha = 0.0;                     newImageView.alpha = 1.0;                     //imageView.center = CGPointMake(500.0, 512.0);                 }                 completion:^(BOOL finished){                     [UIView animateWithDuration:4.0                                      animations:^{                                          newImageView.center = CGPointMake(500.0, 512.0);                                      }];                 }];

从上往下一个动作(默认是左上角,把要改变的值放在animations里):

-(UIView *)myView{    if (!_myView) {        _myView=[[UIView alloc]initWithFrame:CGRectZero];        _myView.backgroundColor=[UIColor redColor];    }    return _myView;}- (IBAction)BtnAction:(id)sender {    self.myView.frame = CGRectMake(0,44, 320, 0);    [self.view addSubview:self.myView];    [UIView animateWithDuration:0.3 animations:^{        self.myView.backgroundColor=[UIColor redColor];        self.myView.frame = CGRectMake(0,44, 320, 100);        } completion:^(BOOL finished) {    }];}

 3:UIView 的旋转和缩放

label.transform = CGAffineTransformMakeRotation(90 *M_PI / 180.0);//顺时针旋转 90度 label.transform = CGAffineTransformMakeRotation(180 *M_PI / 180.0);//顺时针 旋转180度 label.transform = CGAffineTransformMakeRotation(270 *M_PI / 180.0);//顺时针旋转270度CGAffineTransform transform = label.transform;transform = CGAffineTransformScale(transform, 2,0.5);//前面的2表示横向放大2倍,后边的0.5表示纵向缩小一半  label.transform = transform;

 4:加载歌词的代码实例

[ti:伤痕][ar:曾敏杰][al:][by:][offset:0][00:00.11]伤痕 (Live) - 曾敏杰[00:01.58]词:李宗盛[00:02.41]曲:李宗盛[00:03.28]键盘:刘卓/李海郡[00:04.78]吉他:高飞/金天[00:06.20]贝司:李九君[00:07.29]鼓手:卢炜[00:08.17]乐队总监:刘卓[00:09.43]音响总监:金少刚[00:11.01][00:22.75]夜已深 还有什么人[00:28.21]让你这样醒着数伤痕[00:32.28][00:33.09]为何临睡前会想要留一盏灯[00:38.04]你若不肯说 我就不问[00:42.07][00:42.74]只是你现在不得不承认[00:47.35][00:47.93]爱情有时候是一种沉沦

歌词都是以lrc的文件内容,可以进行加载,然后对它进行处理;

@implementation WPFLyricParser+ (NSArray *)parserLyricWithFileName:(NSString *)fileName {        // 根据文件名称获取文件地址    NSString *path = [[NSBundle mainBundle] pathForResource:fileName ofType:nil];        // 根据文件地址获取转化后的总体的字符串    NSString *lyricStr = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL];        // 将歌词总体字符串按行拆分开,每句都作为一个数组元素存放到数组中    NSArray *lineStrs = [lyricStr componentsSeparatedByString:@"\n"];        // 设置歌词时间正则表达式格式    NSString *pattern = @"\\[[0-9]{2}:[0-9]{2}.[0-9]{2}\\]";    NSRegularExpression *reg = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:NULL];        // 创建可变数组存放歌词模型    NSMutableArray *lyrics = [NSMutableArray array];        // 遍历歌词字符串数组    for (NSString *lineStr in lineStrs) {                NSArray *results = [reg matchesInString:lineStr options:0 range:NSMakeRange(0, lineStr.length)];                // 歌词内容        NSTextCheckingResult *lastResult = [results lastObject];        NSString *content = [lineStr substringFromIndex:lastResult.range.location + lastResult.range.length];                // 每一个结果的range        for (NSTextCheckingResult *result in results) {                        NSString *time = [lineStr substringWithRange:result.range];            #warning 对于 NSDateFormatter 类似的重大开小对象,最好使用单例管理            NSDateFormatter *formatter = [NSDateFormatter sharedDateFormatter];            formatter.dateFormat = @"[mm:ss.SS]";            NSDate *timeDate = [formatter dateFromString:time];            NSDate *initDate = [formatter dateFromString:@"[00:00.00]"];                        // 创建模型            WPFLyric *lyric = [[WPFLyric alloc] init];            lyric.content = content;            // 歌词的开始时间            lyric.time = [timeDate timeIntervalSinceDate:initDate];                        // 将歌词对象添加到模型数组汇总            [lyrics addObject:lyric];        }    }        // 按照时间正序排序    NSSortDescriptor *sortDes = [NSSortDescriptor sortDescriptorWithKey:@"time" ascending:YES];    [lyrics sortUsingDescriptors:@[sortDes]];       return lyrics;}@end

 5:UIWebView加载POST请求

NSURL *url = [NSURL URLWithString: @"http://your_url.com"];NSString *body = [NSString stringWithFormat: @"arg1=%@&arg2=%@", @"val1",@"val2"]; NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL: url]; [request setHTTPMethod: @"POST"];[request setHTTPBody: [body dataUsingEncoding: NSUTF8StringEncoding]]; [webView loadRequest: request];

 

转载于:https://www.cnblogs.com/wujy/p/4890648.html

你可能感兴趣的文章
Comparación para 2019 Nueva Lonsdor K518S y K518ISE
查看>>
论文笔记——MobileNets(Efficient Convolutional Neural Networks for Mobile Vision Applications)
查看>>
从今天开始
查看>>
Attribute(特性)与AOP
查看>>
第三次作业
查看>>
Codeforces 962 /2错误 相间位置排列 堆模拟 X轴距离最小值 前向星点双连通分量求只存在在一个简单环中的边...
查看>>
Matrix快速幂 模板
查看>>
MySQL开启远程连接权限
查看>>
tomcat7.0.27的bio,nio.apr高级运行模式
查看>>
C#预处理器命令
查看>>
苹果手表:大方向和谷歌一样,硬件分道扬镳
查看>>
Competing Consumers Pattern (竞争消费者模式)
查看>>
HDUOJ ------1398
查看>>
cf--------(div1)1A. Theatre Square
查看>>
Android面试收集录15 Android Bitmap压缩策略
查看>>
PHP魔术方法之__call与__callStatic方法
查看>>
ubuntu 安装后的配置
查看>>
Html学习_简易个人网页制作
查看>>
angular中ng-bind指令小案例
查看>>
jqery总结
查看>>