2017-06-03 19:07:41 shihuboke 阅读数 2064
  • 微信h5支付开发-php开发微信h5支付demo

    会员免费看,http://edu.csdn.net/lecturer/842右侧可办理会员卡。微信h5支付开发是子恒老师《子恒说微信开发》视频教程的第17部。详细讲解了微信H5支付开发,内容包含开通H5支付,实现微信h5支付,订单查询,关闭订单等等。欢迎反馈,微信号:QQ68183131

    8009 人正在学习 去看看 秦子恒

   联系人:石虎 QQ:1224614774  昵称: 嗡嘛呢叭咪哄

                        QQ群:807236138  群称: iOS 技术交流学习群

 

 

一、概念

 1.此方法很简单,有操作视图和方法,动画效果参考

  2.图片下面有链接

  3.GIF 图请看简书:   http://www.jianshu.com/p/507d0722ce8c

二、代码实现

#import "SHViewController.h"
#define ANGLE_TO_RADIAN(angle) ((angle)/180.0 * M_PI)

@interface SHViewController ()
//图标
@property (weak,nonatomic)IBOutletUIImageView *iconView;
//开点按钮
- (IBAction)start;
//结束按钮
- (IBAction)end;

@end

@implementation CZViewController
- (void)viewDidLoad{
    [superviewDidLoad];
}

//开点按钮功能呢
- (IBAction)start {

    //实例化
    CAKeyframeAnimation *anim = [CAKeyframeAnimationanimation];
    //拿到动画 key
    anim.keyPath =@"transform.rotation";
    // 动画时间
    anim.duration =.25;
    
    // 重复的次数
    //anim.repeatCount = 16;
    //无限次重复
    anim.repeatCount =MAXFLOAT;

    //设置抖动数值
    anim.values =@[@(ANGLE_TO_RADIAN(-5)),@(ANGLE_TO_RADIAN(5)),@(ANGLE_TO_RADIAN(-5))];

    // 保持最后的状态
    anim.removedOnCompletion =NO;
    //动画的填充模式
    anim.fillMode =kCAFillModeForwards;
    //layer层实现动画
    [self.iconView.layeraddAnimation:animforKey:@"shake"];

}

//点击结束按钮
- (IBAction)end {

    //图标
    [self.iconView.layerremoveAnimationForKey:@"shake"];

}

@end

谢谢!!!

 

 

 

2015-10-14 13:53:05 Ma_Yingjiao 阅读数 1335
  • 微信h5支付开发-php开发微信h5支付demo

    会员免费看,http://edu.csdn.net/lecturer/842右侧可办理会员卡。微信h5支付开发是子恒老师《子恒说微信开发》视频教程的第17部。详细讲解了微信H5支付开发,内容包含开通H5支付,实现微信h5支付,订单查询,关闭订单等等。欢迎反馈,微信号:QQ68183131

    8009 人正在学习 去看看 秦子恒

iOS中使用IconFont,第一步跟自定义字体一样,把字体文件iconfont.ttf(这里是实际自己的自定义文件)文件加到项目中


第二步,在项目的info.plist文件中,添加如图:


第三步,在iOS代码中使用:

以UIButton为例,设置字体为自定义字体,大小可以设置文本值为 8 位的 Unicode 字符,打开 demo.html 查找每个图标所对应的 HTML 实体 Unicode 码,比如:

从x开始取后面的字符串,前面补0够8位,像下面这样用法,

 listBtn.titleLabel.font = [UIFont fontWithName:@"iconfont" size:25];
    [listBtn setTitle:@"\U0000e600" forState:UIControlStateNormal];

运行就可以看到图片了;

还可以改变颜色,大小,就把图片当文字一样修改就可以。

2018-03-30 11:26:35 Mayxc 阅读数 172
  • 微信h5支付开发-php开发微信h5支付demo

    会员免费看,http://edu.csdn.net/lecturer/842右侧可办理会员卡。微信h5支付开发是子恒老师《子恒说微信开发》视频教程的第17部。详细讲解了微信H5支付开发,内容包含开通H5支付,实现微信h5支付,订单查询,关闭订单等等。欢迎反馈,微信号:QQ68183131

    8009 人正在学习 去看看 秦子恒

Demo:更换图标demo,如有问题,请随时联系  

需求:换图标,用户无感

1.分析:

        对于iOS,是开发了API可以换图标,但是有规定的,就是你要换的图标是要在APP里面内置的,也就是说你要换的APPicon,是提前放在APP包里面的,具体后面会有解释,好吧直接上代码吧。

2.代码实现过程

    (1)Info.plist配置,直接添加(以下代码直接复制到info.plist中):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleAlternateIcons</key>
	<dict>
		<key>MayOneIcon</key>
		<dict>
			<key>CFBundleIconFiles</key>
			<array>
				<string>MayOneIcon</string>
			</array>
			<key>UIPrerenderedIcon</key>
			<false/>
		</dict>
	</dict>
	<key>UINewsstandIcon</key>
	<dict>
		<key>CFBundleIconFiles</key>
		<array>
			<string></string>
		</array>
		<key>UINewsstandBindingEdge</key>
		<string>UINewsstandBindingEdgeLeft</string>
		<key>UINewsstandBindingType</key>
		<string>UINewsstandBindingTypeMagazine</string>
	</dict>
</dict>
</plist>

    (2)导入预制的图标,120 * 120的就行了,然后名字要和plist中里面的对应,我这里用的是MayOneIcon;(注)这个名字在plist中里面有俩个地方需要修改。

     (3)在需要调用改图标的地方写入换图标的代码:

/*  直接调用此方法,传入数据为iconName,也就是后台给你要换的图标
 默认传的是@"DefaultIcon"
 */
- (void)chengeAppicon:(NSString*)iconNameNew{
    if (iconNameNew.length == 0) {
        return;
    }
    if ([UIApplication sharedApplication].supportsAlternateIcons) {
        NSLog(@"you canExchange");
    }else{
        NSLog(@"you can not Exchange");
        return;
    }
    
    NSString * iconname = [[UIApplication sharedApplication]alternateIconName];
    if ((!iconname&&[iconNameNew isEqualToString:@"DefaultIcon"]) || [iconname isEqualToString:iconNameNew]) {
        return;
    }
    [self exchangealterMethod];
    if ( [iconNameNew isEqualToString:@"DefaultIcon"]) {
        
        [[UIApplication sharedApplication]setAlternateIconName:nil completionHandler:^(NSError * _Nullable error) {
            if (error) {
                NSLog(@"error");
            }else
                NSLog(@"icon name:%@",iconname);
            
        }];
    }else{
        [[UIApplication sharedApplication]setAlternateIconName:iconNameNew completionHandler:^(NSError * _Nullable error) {
            
            if (error) {
                NSLog(@"error");
            }else
                NSLog(@"icon name:%@",iconname);
            
        }];
        
    }
    
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [self exchangealterMethod];
    });
}

- (void)dy_presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion {
    
    if ([viewControllerToPresent isKindOfClass:[UIAlertController class]]) {
        NSLog(@"title : %@",((UIAlertController *)viewControllerToPresent).title);
        NSLog(@"message : %@",((UIAlertController *)viewControllerToPresent).message);
        
        UIAlertController *alertController = (UIAlertController *)viewControllerToPresent;
        if (alertController.title == nil && alertController.message == nil) {
            
            return;
        } else {
            [self dy_presentViewController:viewControllerToPresent animated:flag completion:completion];
            return;
        }
    }
    
    [self dy_presentViewController:viewControllerToPresent animated:flag completion:completion];
}
- (void)exchangealterMethod{
    Method presentM = class_getInstanceMethod(UIViewController.class, @selector(presentViewController:animated:completion:));
    Method presentSwizzlingM = class_getInstanceMethod(self.class, @selector(dy_presentViewController:animated:completion:));
    
    method_exchangeImplementations(presentM, presentSwizzlingM);
}







2019-02-27 17:38:22 weixin_43733988 阅读数 199
  • 微信h5支付开发-php开发微信h5支付demo

    会员免费看,http://edu.csdn.net/lecturer/842右侧可办理会员卡。微信h5支付开发是子恒老师《子恒说微信开发》视频教程的第17部。详细讲解了微信H5支付开发,内容包含开通H5支付,实现微信h5支付,订单查询,关闭订单等等。欢迎反馈,微信号:QQ68183131

    8009 人正在学习 去看看 秦子恒

Demo1—点名APP


成果展示:
在这里插入图片描述


1.iPhone模拟器

  • 回到主界面:Home键 == Command + shift + h;
  • 横竖屏切换:Command + 左右键;
  • 捏合手势 放大缩小:长按alt键

2.开发流程
2.1 更改APP显示的名称
在Info.plist配置文件中更改Bundlename的内容
![](https://img-blog.csdnimg.cn/20190216223727622.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzczMzk4OA==,size_16,c
2.2更改APP的图标
找一个图标,命名为icon.png,将图片拖到左侧的文件中则更改成功。

2.3理清逻辑关系
a.有哪些界面;
b.每个界面需要哪些控件;
显示文字内容 UILable
用于接收用户点按时间UIButton
在这里插入图片描述
2.4搭建界面—在哪里搭建界面
storyboard搭建界面

2.5界面关联
在这里插入图片描述
2.6响应界面的start按钮事件,按住 Ctrl键 ⿏鼠标左键拖拽
2.7更改按钮点击之后的标题作为这个响应事件函数的函数名
在这里插入图片描述
2.8在响应按钮事件的函数中开始编写代码,stop和start状态的求换
在这里插入图片描述
2.9 准备抽奖的名单,名单用数组保存——NSArray 类,OC的数组⾥里里⾯面可以存储多种数据类型,但必须是对象。
在这里,由于这个名单数组要在多处被访问,所以需要属性全局化
在这里插入图片描述
2.10 代码里再关联一个label控件,并申明属性变量
在这里插入图片描述
2.11 使⽤用定时器器开启一个任务

2019-03-16 23:02:57 weixin_43733988 阅读数 86
  • 微信h5支付开发-php开发微信h5支付demo

    会员免费看,http://edu.csdn.net/lecturer/842右侧可办理会员卡。微信h5支付开发是子恒老师《子恒说微信开发》视频教程的第17部。详细讲解了微信H5支付开发,内容包含开通H5支付,实现微信h5支付,订单查询,关闭订单等等。欢迎反馈,微信号:QQ68183131

    8009 人正在学习 去看看 秦子恒

Demo5—时钟

1.使用图层设置背景图片

self.view.layer.contents = (__bridge id _Nullable)([UIImage imageNamed:@"time"].CGImage);

2.创建一个图层用来显示时钟图片,并设置相应的属性

//创建一个图层用来显示一张图片
CALayer *wheelLayer = [CALayer layer];

//设置显示的位置position
wheelLayer.position = CGPointMake(180, 250);

//设置图层的宽 高 bounds属性
wheelLayer.bounds = CGRectMake(0, 0, 296, 296);

//设置锚点:图层的哪个位置和position重合
wheelLayer.anchorPoint = CGPointMake(0.5, 0.5);

//设置图层的内容 即图片
wheelLayer.contents = (__bridge id _Nullable)([UIImage imageNamed:@"Clock"].CGImage);

//图层没法接收事件 要添加图层必须依赖某个视图 所以需要将图层添加到某个视图上图层上
[self.view.layer addSublayer:wheelLayer];

3.创建一个点图层

//创建一个圆点图层
CALayer *redPointLayer = [CALayer layer];

//让红点和表环的中心点重合
redPointLayer.position = wheelLayer.position;

//设置圆点的尺寸
redPointLayer.bounds = CGRectMake(0, 0, 15, 15);

//设置圆角半径
redPointLayer.cornerRadius = 7.5;

//设置圆点颜色
redPointLayer.backgroundColor = [UIColor redColor].CGColor;

4.创建指针,并设置相应属性

  • 创建时针
//创建时针
self.hourLayer = [CALayer layer];
//位置
_hourLayer.position = wheelLayer.position;
//设置锚点
_hourLayer.anchorPoint = CGPointMake(0.5, 0.7);
//尺寸
_hourLayer.bounds = CGRectMake(0, 0, 8, 80);
//颜色
_hourLayer.backgroundColor = [UIColor blackColor].CGColor;
//显示
[self.view.layer addSublayer:_hourLayer];
  • 创建分针
//创建分针
self.miniuteLayer = [CALayer layer];
//位置
_miniuteLayer.position = wheelLayer.position;
//设置锚点
_miniuteLayer.anchorPoint = CGPointMake(0.5, 0.7);
//尺寸
_miniuteLayer.bounds = CGRectMake(0, 0, 6, 100);
//颜色
_miniuteLayer.backgroundColor = [UIColor redColor].CGColor;
//显示
[self.view.layer addSublayer:_miniuteLayer];
  • 创建秒针
//创建秒针
self.secondLayer = [CALayer layer];
//位置
_secondLayer.position = wheelLayer.position;
//设置锚点
_secondLayer.anchorPoint = CGPointMake(0.5, 0.7);
//尺寸
_secondLayer.bounds = CGRectMake(0, 0, 4, 120);
//颜色
_secondLayer.backgroundColor = [UIColor greenColor].CGColor;
//显示
[self.view.layer addSublayer:_secondLayer];

5.写一个方法,让指针对应当前的具体时间

- (void)changeTime{
    //1.获取当前的时间,时间的类:NSDate,二进制:NSData
    NSDate *nowTime = [NSDate date];
    //提取时间,NSDateFormatter类:管理读取时间的格式
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    //设置提取的格式
    formatter.dateFormat = @"K:m:s";
    //从当前时间中提取时分秒
    NSString *timeStr = [formatter stringFromDate:nowTime];
    NSLog(@"%@", timeStr);
    //将字符串分割
    NSArray *timeArray = [timeStr componentsSeparatedByString:@":"];
    NSLog(@"%@", timeArray);
    //将数组中的字符串转换成整型
    int hour = [[timeArray objectAtIndex:0] intValue];
    int minute = [[timeArray objectAtIndex:1] intValue];
    int second = [[timeArray objectAtIndex:2] intValue];
    NSLog(@"%d %d %d", hour, minute, second);
    
    //旋转时分秒针
    _hourLayer.transform = CATransform3DRotate(self.hourLayer.transform, M_PI/6*(hour+minute/60), 0, 0, 1);
    _miniuteLayer.transform = CATransform3DRotate(self.miniuteLayer.transform, M_PI/30*(minute+second/60), 0, 0, 1);
    _secondLayer.transform = CATransform3DRotate(self.secondLayer.transform, M_PI/30.0*second, 0, 0, 1);
}

6.开启一个定时器,使程序运行起来,时钟开始走

- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    //开启定时器,让时钟走起来
    //1.CADisplayLink - 对UIView进行动画 无法完成只运行某个时间段的设置
    //2.NSTime - 数据的处理 如果视图中有滚动视图 在执行滚动事件的时候定时器无效了
    CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(rotate)];
    //默认情况下通过屏幕刷新pinlv来执行任务 60HZ:1s刷新屏幕60次
    link.preferredFramesPerSecond = 1;
    //必须将这个对象放到NSRunLoop中才能被执行
    [link addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
}

7.写一个方法,实现让时分秒指针转起来的操作

- (void)rotate{
    _secondLayer.transform = CATransform3DRotate(_secondLayer.transform, M_PI*2/60.0, 0, 0, 1);
    _miniuteLayer.transform = CATransform3DRotate(_miniuteLayer.transform, M_PI*2/60.0/60.0, 0, 0, 1);
    _hourLayer.transform = CATransform3DRotate(_hourLayer.transform, M_PI*2/60.0/60.0/12.0, 0, 0, 1);
}

8.添加"嘀嗒"的钟表声

  • 先导入头文件
#import <AudioToolbox/AudioToolbox.h>
  • 实现方法
- (void)playMusic{
    //1.获取音频文件路径
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"dida.m4a" ofType:nil];
    
    //2.将字符串的路径转化为NSURL类型
    NSURL *url = [NSURL fileURLWithPath:filePath];
    
    //3.为这个url对应的音频,创建一个系统ID
    SystemSoundID soundID;
    AudioServicesCreateSystemSoundID((__bridge CFURLRef _Nonnull)(url), &soundID);
    
    //4.播放音频
    AudioServicesPlaySystemSound(soundID);
}
没有更多推荐了,返回首页