2013-06-26 11:31:59 donny_zhang 阅读数 2098

demo功能:用UIimageView实现360度旋转效果。

demo说明:iPhone6.1 测试成功。主要代码在:FVImageSequence.m中。在touchesMoved事件中,通过替换UIimageView的image来产生旋转效果。

demo截屏:


demo主要代码:

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
	[super touchesMoved:touches withEvent:event];
	
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint touchLocation = [touch locationInView:self];
	
	int location = touchLocation.x;
//根据移动偏移量,判断旋转的方向。
	
	if(location < previous)
		current += increment;
	else
		current -= increment;
	
	previous = location;
	
//图片临界点限制,在demo中的image文件夹下有所有图片,是从不同角度拍摄的,将这些图片依次显示就可以实现360的旋转效果
	if(current > numberOfImages)
		current = 0;
	if(current < 0)
		current = numberOfImages;
	
	NSString *path = [NSString stringWithFormat:@"%@%d", prefix, current];
	NSLog(@"%@", path);
	
	path = [[NSBundle mainBundle] pathForResource:path ofType:extension];
	
	
	UIImage *img =  [[UIImage alloc] initWithContentsOfFile:path];
	
//设置UIimageView的image为新的image,实现360度旋转效果
	[self setImage:img];
	
	[img release];
}

demo下载地址:http://download.csdn.net/download/donny_zhang/5649943


2019-01-29 18:32:09 sinat_26432415 阅读数 427

利用exif.js插件解决ios手机上传竖拍照片旋转90度问题

问题描述:移动端手机照片上传时,发现ios手机上传竖拍图片会逆时针旋转90度,横拍照片无此问题,部分安卓手机存在此问题。

场景描述

在这里插入图片描述

解决思路

获取到照片拍摄的方向角,对非横排的ios照片进行角度旋转修正。
EXIF.js提供了JavaScript读取图像的原始数据的功能扩展,例如:拍照方向、相机设备型号、GPS地理位置等数据。我们可以通过这个插件获取到它的拍照方向Orientation属性,然后把所有的旋转了的图片都给正过来。
在这里插入图片描述

Canvas旋转原理

在这里插入图片描述
除了canvas原点、宽度、长度的变化外,还需要用到rotate()方法来旋转当前的绘图。
在这里插入图片描述

以Vue为实例

步骤一 :安装EXIF.js插件

  npm  install exif-js  --save

步骤二:在main.js中引入该插件,并将该插件挂载在vue的原型上

  import  EXIF form 'exif-js'
   Vue.prototype .EXIF=EXIF

步骤三 :在具体的页面中进行使用

注意:需要将vue中的上下文this挂到其他变量上,不然会与exif.js中回调函数的this冲突。需等图片加载完成后才能画到canvas上。

	change:function () {
	        let img =new Image();
	        img.src='图片路径';
	        img.setAttribute('crossOrigin', 'Anonymous');
	        img.function () {
	          that.compressImg(img,(dataURL)=> {
	              //后续操
	          });
	       }
	  },
 compressImg:function (img,callback) {
        let that = this;// 需要将Vue的原型挂在that上边,否则会与exif.js中回调函数的this冲突
        let canvas=document.getElementById('myCanvas');
        let ctx=canvas.getContext('2d');
        let initSize=img.src.length;
        let width=img.width;
        let height=img.height;
        canvas.width = width;
        canvas.height = height;
        that.EXIF.getData(img,function () { //解决IOS手机竖拍图片上传旋转的问题
          var imgData=that.EXIF.getAllTags(this);
          if(imgData.Orientation&&imgData.Orientation!=1){
            switch (imgData.Orientation){ //Orientation 拍摄方向,旋转角度
              case 6: //顺时针90°
                canvas.width=height;
                canvas.height=width;
                ctx.rotate(Math.PI/2);
                ctx.drawImage(img, 0, -height, width, height);
                break;
              case 3: //逆时针90°
                ctx.rotate(Math.PI);
                ctx.drawImage(img, -width, -height, width, height);
                break;
              case 8:  //180°
                canvas.width=height;
                canvas.height=width;
                ctx.rotate(3*Math.PI/2);
                ctx.drawImage(img, -width, 0, width, height);
                break;
            }
          }else{
            ctx.drawImage(img, 0, 0, width, height);
          }
        });
          let dataURL = canvas.toDataURL("image/jpeg", 0.1);
          callback?callback(dataURL):null; //调用回调函数
      },

PS:本文参考了此篇文章https://blog.csdn.net/qq_33769914/article/details/70154655

2019-03-07 20:09:46 QQ1452008 阅读数 292

前言

今天尝试使用 360 加固助手 在线加固 iOS 应用,上传之后总是提示加固失败,后面查看帮助文档发现需要启用 bitCode ,在此记录本次经历。


相关资料


遇到的问题

通过以上博客资料,以为可以顺利通过,可是编译时仍旧提示以下错误:

bitcode bundle could not be generated because ‘xxx.a(xxx.o)’ was built without full bitcode.

后来灵光一闪,按照 iOS9 bitCode 博文中的描述,在主项目的编译设置中,即

Build Settings -> Other C Flags 中添加 -fembed-bitcode

至此 Product->Archive 才通过。

可是上传到 360 加固保(限制文件上传大小为 100M)的时候才发现,这样处理之后文件增大了很多,导致压缩成 ZIP 文件之后还大于 100M,没辙了。


结语

虽然最终没有成功加固,但还是记录一下经验,加深印象。

2016-06-22 00:14:40 C_calary 阅读数 673

先定义一个UIImageView *roundImg,然后在需要的地方调用startAnimation就可以一直旋转了。

//旋转动画
-(void) startAnimation
{
    [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(transformAction) userInfo:nil repeats:YES];
}

-(void)transformAction
{
    angle = angle + 0.01; 
    if (angle > 6.28) { //2*3.14 弧度制一周
        angle = 0;
    }
    CGAffineTransform transform = CGAffineTransformMakeRotation(angle);
    roundImg.transform = transform;
}

//注:在旋转中有时会遇见旋转的图片变形,我这里是在初始化图片是就设定了他的frame,如果后面对frame有重新设置可能会引起这个问题,不是太确定,可以试试。
2017-04-13 19:52:00 miaocuilin 阅读数 4267

- (void)rotateView:(UIImageView *)view

{

    CABasicAnimation *rotationAnimation;

    rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];

    rotationAnimation.toValue = [NSNumber numberWithFloat:M_PI*2.0];

    rotationAnimation.duration = 1;

    rotationAnimation.repeatCount = HUGE_VALF;

    [view.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];

}


如上代码,传入要旋转的view即可。

如果想要停止:

[self.playStatusImageView.layer removeAllAnimations];//停止动画

即可。

360 Player ios

阅读数 478

没有更多推荐了,返回首页