0

触摸对象时调整对象大小的最佳方法是什么?

基本上,我想要一个盒子(最好是可以有圆角的盒子)。单击框的左半部分时,框会在 y 轴上缓慢而平滑地增大,将其下方的类似类型的对象向下推。单击框的右半部分时,框会缓慢平滑地缩小。

我想知道我应该为此使用什么类型的对象。我在考虑按钮,因为它们可以有圆角(如何圆角按钮)。我将有一个带有彩色背景的大按钮和两个较小的按钮,每个按钮将占据父按钮的一半。

我将按从上到下的升序为所有按钮提供整数标识符。当按钮 3 变大时,我将相应地移动所有按钮 4 和上下。

基本上,按钮只能是固定大小(为简单起见,我们只说 10 的倍数),但我想让它们在这些大小之间平滑移动。此外,当用户第一次点击按钮时,我希望动画开始并线性继续,直到用户移开手指,此时我希望它动画到下一个 10 的倍数。我应该如何处理这部分?

我还需要使包含按钮的视图可滚动,因为我希望人们能够制作比屏幕高度更高的框。我该怎么办?

如果您有任何其他建议,他们也欢迎。

4

1 回答 1

2

将其他元素的角四舍五入没有问题UI,你只需要包括

#import <QuartzCore/QuartzCore.h>

//and create corner on layer of ui element
[_myView.layer setCornerRadius:8.0f];

要检测点击了哪个部分,请使用本文中的方法touchesBegan:touchesEnded:类似方法。每次单击屏幕时,您都必须检测触摸是否在您的 ui 元素上,以及触摸是在左侧还是右侧。

为了动画你的 ui 元素,我建议创建一个categoryfor 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];

您可以编写类别方法来随心所欲地移动您的视图,如果您将其抽象化,您也可以在下一个项目中使用新类别。

于 2013-11-15T09:37:12.367 回答