我有一个标签,我想“滑动删除”。我想要的是:
知道实现这个的最佳方法是什么?
提前致谢!
答案 0 :(得分:2)
您需要使用UIPanGestureRecognizer
来执行此操作。当手势识别器启动时,您将需要跟踪起点。你还需要定义一些可以平移的数量,这一数字一直被认为是。当平移发生时,您将看到触摸移动了多远并将标签移动了该量。您还将确定通过“一直到”距离移动的方式的百分比,并相应地设置alpha。
到达现场后,您可以取消手势识别器(将其enabled
属性设置为NO
)并执行您想要执行的任何操作。如果用户释放他们的触摸(因此手势识别器在他们完全拖动之前结束),您显然希望在此时重置标签位置和alpha。
您可能还需要考虑平移结束时的速度,如果它超过一定的速度,请继续使其以该速度继续动画到完成状态,否则如果速度不快足够,让它回到起始状态。但是,在您最初实施它之后,您可能只想打扰它,看看您是否想要这个。
答案 1 :(得分:0)
将它放在你的UIViewController中。
警告 :我在没有XCode的情况下输入了所有内容,但从未对其进行过测试。您可能需要修复拼写错误并调整数字。
// Declare this in the anonymous category of your UIViewController
@property(nonatomic, strong) UILabel* label;
- (void)didSwipeLabel:(UISwipeGestureRecognizer*)swipe;
- (void)willRemoveLabel;
// Put the following in the usual places in .m file
- (void)viewDidLoad {
[super viewDidLoad];
self.label = [UILabel alloc] init];
self.label.font = [UIFont boldSystemFontOfSize:30.0];
self.label.text = @"SWIPE THIS LABEL TO CHANGE THE ALPHA";
[self.label sizeToFit];
[self.label addGestureRecognizer:[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipeLabel:)]];
[self.view addSubview:self.label];
}
- (void)didSwipeLabel:(UISwipeGestureRecognizer*)swipe
{
// The value of 0.1 needs to be adjusted. Most likely it needs
// to be decreased.
if (swipe.direction == UISwipeGestureRecognizerDirectionRight) {
self.label.alpha = self.label.alpha - 0.1;
} else if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) {
self.label.alpha = self.label.alpha + 0.1;
}
if (self.label.alpha <= 0.0) {
[self willRemoveLabel];
}
}
- (void)willRemoveLabel
{
NSLog(@"label should be removed");
}