答案 0 :(得分:1)
<强> StoreTableView.h 强>
#import <UIKit/UIKit.h>
@protocol StoreHouseTableViewTransform
@property (nonatomic) CGFloat scaleValue;
-(void)transFormForCell:(CGFloat)scaleFactor;
@end
@interface StoreTableView : UITableView
@end
<强> StoreTableView.m 强>
#import "StoreTableView.h"
@implementation StoreTableView
-(void)layoutSubviews{
[super layoutSubviews];
[self transformTable];
}
- (void )transformTable{
for (NSIndexPath *indexpath in self.indexPathsForVisibleRows) {
UITableViewCell *cell = [self cellForRowAtIndexPath:indexpath];
if ([cell conformsToProtocol:@protocol(StoreHouseTableViewTransform)]) {
UITableViewCell <StoreHouseTableViewTransform> *vc = (UITableViewCell<StoreHouseTableViewTransform> *)cell;
CGFloat distCenter=[self computeDistance:indexpath];
[vc transFormForCell:[self computeScale:distCenter withMinScale:vc.scaleValue]];
}
}
}
-(CGFloat )computeDistance:(NSIndexPath *)indexpath{
CGRect rect=[self rectForRowAtIndexPath:indexpath];
CGFloat cellCenter=rect.origin.y + rect.size.height/2;
CGFloat cellContentCenter=self.contentOffset.y + self.bounds.size.height/2;
return fabs(cellCenter - cellContentCenter);
}
-(CGFloat )computeScale:(CGFloat)distanceOfCenter withMinScale:(CGFloat)scaleFactor{
return (1.0-scaleFactor) * distanceOfCenter / self.bounds.size.height;
}
@end
<强> StoreTableViewCell.h 强>
#import <UIKit/UIKit.h>
#import "StoreTableView.h"
@interface StoreTableViewCell : UITableViewCell<StoreHouseTableViewTransform>{
CGFloat minimumScale;
}
@property (weak, nonatomic) IBOutlet UIView *backView;
@property (weak, nonatomic) IBOutlet UIImageView *scaleImage;
@end
<强> StoreTableViewCell.m 强>
#import "StoreTableViewCell.h"
@implementation StoreTableViewCell
@synthesize scaleValue;
-(void )prepareForReuse{
[super prepareForReuse ];
minimumScale = 0.85;
self.backView.transform = CGAffineTransformMakeScale(minimumScale, minimumScale);
}
#pragma mark delegate
-(void)transFormForCell:(CGFloat)scaleFactor{
self.backView.transform = CGAffineTransformMakeScale(1.0 - scaleFactor, 1.0 - scaleFactor);
}
@end
这是StoreHouse Animation的Objective-C实现
将TableView与StoreTableView
和Cell与StoreTableViewCell
子类化。
我想也是如此,这对你有帮助
玩scaleFactor
答案 1 :(得分:0)
我花了大约4个小时尝试在基于Xcode Objc的项目中启用Swift。我的&#34; myproject-Swift.h&#34;文件创建成功,但我的Xcode没有看到我的Swift类。所以我决定创建一个新的基于Xcode Objc的项目,最后我找到了正确的答案!希望这篇文章能帮助某人:-) 基于Xcode Objc的项目的逐步快速集成:
1.创建新的* .swift文件(在Xcode中)或使用Finder添加它 2.如果Xcode之前没有这样做,请添加快速桥接空标题(参见下面的4) 3.使用@objc属性实现你的Swift类:
import UIKit
@objc class Hello : NSObject {
func sayHello () {
println("Hi there!")
}
}
4.打开构建设置并检查以下参数: 产品模块名称:myproject 定义模块:是 嵌入式内容包含Swift:是的 安装Objective-C兼容性标头:是 Objective-C桥接标题:$(SRCROOT)/Sources/SwiftBridging.h 5.在* .m文件中导入标题(由Xcode自动生成)
#import "myproject-Swift.h"
6。清理并重建您的Xcode项目
答案 2 :(得分:0)
他们开源了他们的动画引擎。建立在CADisplayLink之上,他们主要推荐这个,如果你想要做与手势交互的基于物理的动画。 https://github.com/storehouse/Advance