图片的偏移和旋转问题

#import "ViewController.h"

@interface ViewController ()
{
    UIImageView *imgView;
    int x;
    int y;
}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    [self initWithFrame];

}

#pragma mark 初始化界面
- (void)initWithFrame
{
    imgView = [[UIImageView alloc]initWithFrame:(CGRect){100,100,100,100}];
    [imgView setImage:[UIImage imageNamed:@"header.jpg"]];
    [self.view addSubview:imgView];

    UIButton *upBtn = [[UIButton alloc]initWithFrame:(CGRect){100,300,100,30}];
    [upBtn setTitle:@"向上" forState:UIControlStateNormal];
    [upBtn addTarget:self action:@selector(upBtnAction:) forControlEvents:UIControlEventTouchUpInside];
    [upBtn setBackgroundColor:[UIColor blueColor]];
    [self.view addSubview:upBtn];

    UIButton *downBtn = [[UIButton alloc]initWithFrame:(CGRect){100,350,100,30}];
    [downBtn setTitle:@"向下" forState:UIControlStateNormal];
    [downBtn addTarget:self action:@selector(downBtnAction:) forControlEvents:UIControlEventTouchUpInside];
        [downBtn setBackgroundColor:[UIColor blueColor]];
    [self.view addSubview:downBtn];

    UIButton *leftBtn = [[UIButton alloc]initWithFrame:(CGRect){220,300,100,30}];
    [leftBtn setTitle:@"向左" forState:UIControlStateNormal];
    [leftBtn addTarget:self action:@selector(leftBtnAction:) forControlEvents:UIControlEventTouchUpInside];
    [leftBtn setBackgroundColor:[UIColor blueColor]];
    [self.view addSubview:leftBtn];

    UIButton *rightBtn = [[UIButton alloc]initWithFrame:(CGRect){220,350,100,30}];
    [rightBtn setTitle:@"向右" forState:UIControlStateNormal];
    [rightBtn addTarget:self action:@selector(rightBtnAction:) forControlEvents:UIControlEventTouchUpInside];
    [rightBtn setBackgroundColor:[UIColor blueColor]];
    [self.view addSubview:rightBtn];

    UIButton *rotateBtn = [[UIButton alloc]initWithFrame:(CGRect){100,400,100,30}];
    [rotateBtn setTitle:@"旋转" forState:UIControlStateNormal];
    [rotateBtn addTarget:self action:@selector(rotateBtnAction:) forControlEvents:UIControlEventTouchUpInside];
    [rotateBtn setBackgroundColor:[UIColor blueColor]];
    [self.view addSubview:rotateBtn];

    x = imgView.frame.origin.x;
    y = imgView.frame.origin.y;
}

以上是界面初始化,就不多讲了,新手版。

以下内容包括了个人见解和排错代码,当然,方式仅限于新手,如果有更好的方式还请留言,以供学习,交流,不甚感激。

/*
    过程中的注意点:
    使用transform时,要注意到transform的参考方位是 {a,b,c,d,tx,ty},旋转中心点以tx,ty为准,如果同时使用transform来进行平移和旋转就会造成,偏移的中心点无法估计,因为旋转时的角度改变了transform的tx,ty。
    所以一般在进行使用时,比较容易的方式是偏移用frame进行定位,旋转使用transform.

 */
#pragma  mark 向上按钮事件
- (void)upBtnAction:(id)sender
{

    [UIView animateWithDuration:1.0 animations:^{
////        imgView.transform = CGAffineTransformMakeTranslation( imgView.transform.tx, -50);
//        imgView.transform = CGAffineTransformTranslate(imgView.transform, 0, -50 );
        imgView.frame=CGRectMake(x,y-=50, 100,100);
    }];
//        NSLog(@"向上方位:%f,%f,%f,%f,%f,%f",imgView.transform.a,imgView.transform.b,imgView.transform.c,imgView.transform.d,imgView.transform.tx,imgView.transform.ty);

}

#pragma  mark 向左按钮事件
- (void)leftBtnAction:(id)sender
{
    [UIView animateWithDuration:1.0 animations:^{
////        imgView.transform = CGAffineTransformMakeTranslation( -50, imgView.transform.ty);
//        imgView.transform =  CGAffineTransformTranslate(imgView.transform, -50, 0 );
//
        imgView.frame=CGRectMake(x-=50,y, 100,100);
    }];
//    NSLog(@"向左方位:%f,%f,%f,%f,%f,%f",imgView.transform.a,imgView.transform.b,imgView.transform.c,imgView.transform.d,imgView.transform.tx,imgView.transform.ty);
}

#pragma  mark 向下按钮事件
- (void)downBtnAction:(id)sender
{
        [UIView animateWithDuration:1.0 animations:^{
            //        imgView.transform = CGAffineTransformMakeTranslation( imgView.transform.tx, 50);
//           imgView.transform =  CGAffineTransformTranslate(imgView.transform,  0, 50 );
            imgView.frame=CGRectMake(x,y+=50, 100,100);

        }];
    //
    //    NSLog(@"向下方位:%f,%f,%f,%f,%f,%f",imgView.transform.a,imgView.transform.b,imgView.transform.c,imgView.transform.d,imgView.transform.tx,imgView.transform.ty);

}

#pragma  mark 向右按钮事件
- (void)rightBtnAction:(id)sender
{
    [UIView animateWithDuration:1.0 animations:^{
////        imgView.transform = CGAffineTransformMakeTranslation( 50, imgView.transform.ty);
//       imgView.transform = CGAffineTransformTranslate(imgView.transform, 50, 0 );

        imgView.frame=CGRectMake(x+=50,y, 100,100);
    }];
//    NSLog(@"向右方位:%f,%f,%f,%f,%f,%f",imgView.transform.a,imgView.transform.b,imgView.transform.c,imgView.transform.d,imgView.transform.tx,imgView.transform.ty);

}

#pragma  mark 旋转按钮事件
- (void)rotateBtnAction:(id)sender
{

    //CGAffineTransform trans = CGAffineTransformMakeTranslation(0, 0);
        [UIView animateWithDuration:4 animations:^{
            imgView.transform = CGAffineTransformRotate(imgView.transform, M_PI);
        }];

}
时间: 2024-10-05 03:28:30

图片的偏移和旋转问题的相关文章

java处理图片--图片的缩放,旋转和马赛克化

这是我自己结合网上的一些资料封装的java图片处理类,支持图片的缩放,旋转,马赛克化.(转载请注明出处:http://blog.csdn.net/u012116457) 不多说,上代码: package deal; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.geom.AffineTransform; impo

iOS 特定图片的按钮的旋转动画

最近做的东西中,要为一个有特定图片的按钮添加旋转动画,Demo代码如下: #import "ViewController.h" @interface ViewController () { BOOL flag; } @property (strong, nonatomic) UIImageView *imageView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; flag

android 选择图片或拍照时旋转了90度问题

由于前面的博文中忽略了点内容,所以在这里补上,下面内容就是解决拍照或者选择图片显示的时候图片旋转了90度或者其他度数问题,以便照片可以正面显示:具体如下: 首先直接看上面博文下的拍完照或者选完图后处理部分: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (resultCode) { case 1: if (data != null) { // 取得返

js鼠标拖动图片360度平面旋转

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

Android -- ImageView(控制图片的大小以及旋转的角度)

1.  2.   实现代码 package com.example.myimageview3; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Matrix; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.util.DisplayMetrics

自定义View实现图片的绘制、旋转、缩放

1.图片 把一张JPG图片改名为image.jpg,然后拷贝到项目的res-drawable中. 2.activity_main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 android:id="@+id/imageid" 3 android:layout_width="fill_parent" 4 android:lay

Excel催化剂开源第35波-图片压缩及自动旋转等处理

Excel催化剂在图片处理方面,也是做到极致化,一般的Excel插件插入图片是原图插入或不可控制压缩比例地方式插入图片至Excel当中,但Excel催化剂的插入图片,是开发了可调节图片大小的插入方式,让图片在Excel上可以有预期的像素大小和文件大小的平衡. 在图片处理方面,完全可以借助一个非常棒的类库,实现美图秀秀那般日常的图片处理. 此篇对应的Excel催化剂功能实现:第11波-快速批量插入图片并保护纵横比不变 https://www.jianshu.com/p/9a3d9aa7ba7e E

图片 滚动 放大缩小 旋转

需求就是页面浏览一张图片,要求提供放大.缩小.旋转的功能 这里实现的方式是使用jquery的一个iviewer插件 具体实现方式已经提供在下载包中,下载链接: 如果失效请联系QQ:1546224081,或者QQ:2651408273 ps几点: 1,使用文件前,做好相应css和js的映射. 2,mousewheel是iviewer-master的简介版. 3,更改mousewheel图表时,记得要更改jquery.iviewer.css的中的最后两行,以及相应的路径. 4,两个demo我都放在了

html5人物图片360度立体旋转

体验效果:http://hovertree.com/texiao/html5/10.htm 下载:http://hovertree.com/hvtart/bjae/t16oddyt.htm 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Full 360 degree View - HoverTree</title> <sty