触摸对象时调整对象大小的最佳方法是什么?
基本上,我想要一个盒子(最好是一个可以有圆角的盒子)。单击框的左半部分时,框将在y轴上缓慢平滑地增大,向下推动其下方相似类型的对象。单击框的右半部分时,框将缓慢平滑地缩小。
我想知道我应该使用什么类型的对象。我在想按钮,因为它们可以有圆角(How to round the corners of a button)。我将有一个大按钮,其中有一个彩色背景和两个较小的按钮,每个按钮占据父按钮的一半。
我将按从上到下的升序给出所有按钮整数标识符。当按钮3变大时,我将相应地向下移动所有按钮4和向上。
基本上,按钮只能是固定尺寸(简单来说,只说10的倍数),但我希望它们能够在这些尺寸之间平滑移动。此外,当用户第一次点击按钮时,我希望动画开始并线性地继续,直到用户移开他们的手指,此时我希望它动画到10的下一个倍数。我应该怎么做这个部分?
我还需要制作包含可滚动按钮的视图,因为我希望人们能够制作比屏幕高度更高的盒子。我怎么能这样做呢?
如果您有任何其他建议,也欢迎他们。
答案 0 :(得分:2)
对其他UI
元素的角进行舍入没有问题,您只需要包含
#import <QuartzCore/QuartzCore.h>
//and create corner on layer of ui element
[_myView.layer setCornerRadius:8.0f];
要检测已点击的部分,请使用this post中的方法touchesBegan:
或touchesEnded:
。每次单击屏幕时,您都必须检测触摸是否在您的ui元素上,以及它是在左侧还是右侧。
要为您的ui元素设置动画,我建议为category
创建UIView
。例如,此代码会将您的元素移动到另一个位置:
- (void)animateMyViewWithDuration:(float)duration
andRepeat:(int)repeat{
[UIView animateWithDuration:duration animations:^{
self.frame = CGRectMake(self.frame.origin.x,
self.frame.origin.y + 20,
self.frame.size.width,
self.frame.size.height);
} completion:^(BOOL finished) {
if(repeat > 0){
[self animateMyView:view
withDuration:duration
andRepeat:(repeat - 1)];
}
}];
}
将其添加到新类别中,在UIViewController
:
#import "UIView+CategoryName.h"
如果触摸符合您的需要,请在touch
方法中调用它:
[_myView animateMyViewWithDuration:0.2f andRepeat:5];
您可以编写类别方法来移动您想要的视图,如果您这样做,您可以在下一个项目中使用新类别。