动画

[转]UITableView中cell点击的绚丽动画效果

2015-12-07  本文已影响736人  ldjhust

转:http://www.cnblogs.com/YouXianMing/p/4187996.html

这个链接中的代码也实现了这种效果

https://github.com/cbpowell/MarqueeLabel

最终效果如下:

原理如下:

1. 获取文本

2. 计算文本宽度

3. 将这个Label放入ScrollView中

4. 将ScrollView的contentSize的宽度设置与文本宽度一致

5. 做动画

*6. 边缘的渐隐效果请使用带透明像素的PNG图片

//

//RootViewController.m

//

//Copyright (c) 2014年 Y.X. All rights reserved.

//

#import"RootViewController.h"

#import"YXKit.h"

#import"FontPool.h"

@interfaceRootViewController ()

@end

@implementationRootViewController

- (void)viewDidLoad

{

[super viewDidLoad];

self.view.backgroundColor=[UIColor blackColor];//注册字体

REGISTER_FONT(bundleFont(@"新蒂小丸子体.ttf"),@"新蒂小丸子体");//获取文本

NSString *string=@"喜欢这首情思幽幽的曲子,仿佛多么遥远,在感叹着前世的情缘,又是那么柔软,在祈愿着来世的缠绵。《莲的心事》,你似琉璃一样的晶莹,柔柔地拨动我多情的心弦。我,莲的心事,有谁知?我,莲的矜持,又有谁懂?";

//初始化label

UILabel *label      = [UILabelnew];

label.text=string;

label.numberOfLines=0;

label.textColor=[UIColor cyanColor];

label.font= [UIFont fontWithName:CUSTOM_FONT(@"新蒂小丸子体",0)

size:20.f];

//计算尺寸

CGSize size        = [label boundingRectWithSize:CGSizeMake(0,0)];

label.frame=(CGRect){CGPointZero, size};

//初始化

ScrollViewUIScrollView *showView =\

[[UIScrollView alloc] initWithFrame:CGRectMake(0,90,320, size.height)];

showView.contentSize=size;

showView.showsHorizontalScrollIndicator=NO;

[showView addSubview:label];

[self.view addSubview:showView];

//形成边缘的遮罩

UIImageView *imageView =\

[[UIImageView alloc] initWithFrame:CGRectMake(0,90,320, size.height)];

imageView.image= [UIImage imageNamed:@"bg"];

[self.view addSubview:imageView];

//动画

[UIView animateKeyframesWithDuration:10delay:7options:UIViewKeyframeAnimationOptionAllowUserInteraction

animations:^{

//计算移动的距离

CGPoint point =showView.contentOffset;

point.x= size.width -320.f;

showView.contentOffset=point;

}

completion:^(BOOL finished) {

}];

}@end

上一篇下一篇

猜你喜欢

热点阅读