如何从固定的中心点旋转图像和箭头线

时间:2015-11-04 06:11:13

标签: iphone xcode image-rotation icarousel

在我的应用程序中,我有一个按钮/中心点的固定大小,我想旋转箭头线,当我触摸/向上/向下滚动时,此附加图像也会旋转。   我在这里做了一个演示我使用icarousel类滚动图像。 但我不能同时滚动箭头和图像滚动。 请帮我解决一下这个问题。 enter image description here

我只使用icarousel进行图像滚动的代码就在这里..

  - (UIView *)carousel:(__unused iCarousel *)carousel viewForItemAtIndex: (NSInteger)index reusingView:(UIView *)view
{
UIView *viewFor;
UIImageView *itemView;
if (view==nil) {

    viewFor=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)];
    itemView=[[UIImageView alloc]initWithFrame:CGRectMake(0, 45, 120, 120)];
    [itemView.layer setCornerRadius:itemView.frame.size.width/2];
    [itemView setClipsToBounds:YES];
    [viewFor addSubview:itemView];

        StikImage=[[UIImageView alloc]initWithFrame:CGRectMake(-140, 95, 140, 20)];
   StikImage.backgroundColor=[UIColor whiteColor];
   [viewFor addSubview:StikImage];

  }
  else
  {
    viewFor=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)];
    itemView=[[UIImageView alloc]initWithFrame:CGRectMake(0, 45, 120, 120)];
    [itemView.layer setCornerRadius:itemView.frame.size.width/2];
    [itemView setClipsToBounds:YES];
    [viewFor addSubview:itemView];

        StikImage=[[UIImageView alloc]initWithFrame:CGRectMake(-140, 95, 140, 20)];
         StikImage.backgroundColor=[UIColor whiteColor];
        [viewFor addSubview:StikImage];

  }
   itemView.image=[images objectAtIndex:index];
return viewFor;
 }

这是我用于转换图像的自定义类型icrousel方法

- (CATransform3D)carousel:(iCarousel *)carousel itemTransformForOffset:(CGFloat)offset baseTransform:(CATransform3D)transform {

const CGFloat centerItemZoom = 1.6;
const CGFloat centerItemSpacing = 1.2;
const CGFloat centerItemYOffset = 100;
CGFloat spacing = [self carousel:carousel valueForOption:iCarouselOptionSpacing withDefault:1.3f];
CGFloat absClampedOffset = MIN(2.5, fabs(offset));
CGFloat clampedOffset = MIN(1.0, MAX(-1.0, offset));
CGFloat scaleFactor = 1.0 + absClampedOffset * (1.2/centerItemZoom - 1.0);
CGFloat yoffset = (1.0f - absClampedOffset) * centerItemYOffset;
offset = (scaleFactor * offset + scaleFactor * (centerItemSpacing - 1.0) * clampedOffset) * carousel.itemWidth * spacing;



if (carousel.vertical)
{
    transform = CATransform3DTranslate(transform, yoffset, offset, -absClampedOffset);

}
else
{
    transform = CATransform3DTranslate(transform, offset, yoffset, -absClampedOffset);
}

transform = CATransform3DScale(transform, scaleFactor, scaleFactor, 5.0f);
  return transform;
 }

1 个答案:

答案 0 :(得分:0)

使用以下代码旋转图像视图

imageview.transform = CGAffineTransformMakeRotation(degrees * M_PI/180);

你可以使用你想要的度数大小如180,90,240,270 ......,取决于你的要求“触摸/向上/向下滚动”