【问题标题】:If else condition in rotating of images in IOSIf else 条件在 IOS 中旋转图像
【发布时间】:2018-04-01 07:44:25
【问题描述】:

我在集合视图单元格中有一个按钮,当用户单击该按钮时,它会旋转图像。我有四个角度来旋转图像,但我有点逻辑困惑,我如何在单击不同角度时将图像视图中的图像旋转。当完成四个角度时,图像应该只旋转到这四个角度,如果它想再次改变角度,用户应该能够从这四个角度再次改变角度。 这是四个角度,

 _imageView.transform = CGAffineTransformMakeRotation(M_PI);

_imageView.transform = CGAffineTransformMakeRotation(M_PI_4);

_imageView.transform = CGAffineTransformMakeRotation(M_PI_2);

_imageView.transform = CGAffineTransformMakeRotation(M_PI*2);

【问题讨论】:

  • 什么不起作用?
  • 你的问题不是很清楚。 But i'm confused in a bit logic that how can i rotate an image in an image view on clicking to different angles. 是什么意思?我以为您正在使用UIButton 来更改UIImageView 的角度
  • 我希望在用户第一次单击时单击按钮的逻辑图像应该旋转到 M_PI 角度,如果再次用户单击它应该旋转到 M_PI_4 和其他相同。 @Rhenz
  • 我想要逻辑,当我们单击按钮时,如何在这四个角度旋转它。 @Lu_
  • 我正在尝试理解您的问题。您想要一个动作,当您按下按钮时,图像将以 M_PI 旋转,然后当您再次按下 UIButton 时,它将旋转到 M_MP_4 等等?对吗?

标签: ios objective-c rotation


【解决方案1】:

我会这样做的。

  1. 创建一个包含旋转值的数组,如

let mpix2 = M_PI*2 let rotationValues = [M_PI, M_PI_4, M_PI_2, mpix2]

  1. 创建一个变量来保存图像视图的当前状态,在这种情况下,您可以只使用数组的索引

var currentIndex = 0

  1. 创建一个在您按下按钮时将处理逻辑的函数

func rotateImage() { _imageView.transform = CGAffineTransformMakeRotation(rotationValues[index]) if currentIndex != rotationValues.count-1 { currentIndex = currentIndex + 1 } else { // reset the current index back to zero currentIndex = 0 } }

【讨论】:

  • 兄弟请在目标 c 中。 @Rhenz
  • 你能做到吗? @Rhenz
【解决方案2】:

如果要将UIImageView 向右旋转,则该值必须大于0,如果要向左旋转,则该值必须为负。例如 -90。

首先获取当前角度/变换方式

CGFloat angle = atan2f(yourView.transform.b, yourView.transform.a);

然后将所需的旋转角度添加到angle 变量并将其传递给创建的函数以旋转imageView

CGFloat degrees = <Your desired angle>; //the value in degrees
CGFloat radians = degrees * M_PI/180;
imageView.transform = CGAffineTransformMakeRotation(radians);

您可以创建一个函数,在其中您可以从角度数组中传递特定角度,imageView 将被旋转,

【讨论】:

  • 但是当我点击一个按钮时如何旋转? @Paras Gorasiya
  • 只需从上面的代码中创建一个函数并在每个按钮单击事件上调用该函数。
  • 这就是我想要的逻辑我很困惑如何制作这个。@Paras Gorasiya
  • b 和 a 的值是多少? @Paras Gorasiya
  • 你应该用你的 imageView 替换 yourView。
猜你喜欢
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 2016-09-30
  • 1970-01-01
  • 1970-01-01
  • 2019-04-25
  • 1970-01-01
  • 2019-07-01
相关资源
最近更新 更多