【问题标题】:How to make UIButton move with UIScrollView如何使 UIButton 与 UIScrollView 一起移动
【发布时间】:2015-08-14 19:40:17
【问题描述】:

我有一个UIScrollView 菜单,它通过激活UIButton 在视口上方和下方移动。问题是当我按下按钮以使UIScrollView 菜单上下移动时,该按钮仅停留在一个位置。我希望UIButton 在激活时说出UIScrollView 菜单的上方。这是它的样子,“开放”是UIButton

这里是来自viewcontroller.mUIScrollViewUIButton 的动画代码。

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize scrollView;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    draw1 = 0;
    scrollView.frame = CGRectMake(0, 300, 480, 55);
    [scrollView setContentSize:CGSizeMake(480, 55)];

    openMenu.frame = CGRectMake(220, 270, 60, 30);
}

- (IBAction)OpenMenu:(id)sender {
    if (draw1 ==0) {
        draw1 = 1;
        [UIView animateWithDuration:0.5
                              delay:0.0
                            options: UIViewAnimationOptionCurveEaseOut
                         animations:^{
                             scrollView.frame = CGRectMake(0, 1000, 568, 200);
                             openMenu.frame = CGRectMake(220, 200, 60, 30);
                         }
                         completion:^(BOOL finished){
                             NSLog(@"Done!");
                         }];
    } else {
        draw1 = 0;
        [UIView animateWithDuration:0.5
                              delay:0.0
                            options: UIViewAnimationOptionCurveEaseOut
                         animations:^{
                             scrollView.frame = CGRectMake(0, 300, 568, 200);
                             openMenu.frame = CGRectMake(220, 270, 60, 30);
                         }
                         completion:^(BOOL finished){
                             NSLog(@"Done!");
                         }];
    }
}

我希望“打开”按钮位于绿色 UIScrollView 上方(而不是在其上方),我该怎么做?

【问题讨论】:

  • 您是从用户界面创建 openMenu 吗?如果是,请确保 openMenu 与 IBOutlet 连接
  • @C_X 与IBoutlet相连。
  • 你添加一些约束,更新 viewDidLayoutSubviews 中的框架....?
  • 不,这不是我的代码的一部分。

标签: ios objective-c uiscrollview uibutton


【解决方案1】:

好的,把openMenu.frame = <frame>改成openMenu.layer.frame = <frame>

你的代码应该是这样的 设置初始帧添加此方法

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    draw1 = 1;
    openMenu.layer.frame = CGRectMake(self.view.center.x - 30, self.view.frame.size.height - 80, 60, 30);
}

 - (IBAction)OpenMenu:(id)sender {
    if (draw1 ==0) {
        draw1 = 1;
        [UIView animateWithDuration:0.5
                              delay:0.0
                            options: UIViewAnimationOptionCurveEaseOut
                         animations:^{
                             scrollView.frame = CGRectMake(0, 1000, 568, 200);
                             openMenu.layer.frame = CGRectMake(self.view.center.x - 30, self.view.frame.size.height - 80, 60, 30);
                         }
                         completion:^(BOOL finished){
                             NSLog(@"Done!");
                         }];
    } else {
        draw1 = 0;
        [UIView animateWithDuration:0.5
                              delay:0.0
                            options: UIViewAnimationOptionCurveEaseOut
                         animations:^{
                             scrollView.frame = CGRectMake(0, 300, 568, 200);
                             openMenu.layer.frame = CGRectMake(self.view.center.x - 30, 270, 60, 30);
                         }
                         completion:^(BOOL finished){
                             NSLog(@"Done!");
                         }];
    }
}

【讨论】:

  • 在动画块里面,我用你的代码更新了答案
  • 这就是发生的事情,当我按下按钮时,它会移动到靠近顶部的左侧。当我再次按下它时,按钮向下移动并出现菜单。当我最后一次按下它时,按钮回到顶部附近的左侧。看起来像这样 - s2.postimg.org/sb5vzhpqh/unnamed_2.png
  • 我有两个错误。第一个 - 在这一行的“ViewController *”类型的对象上找不到属性“draw” - self.draw = 1;
  • 这是你的画1,我认为你可以改变它
  • 第二个说 - 在“ViewController”类型的对象上找不到属性“openMenu”*:您的意思是访问实例变量“openMenu”吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-05
  • 1970-01-01
  • 1970-01-01
  • 2012-11-30
  • 1970-01-01
  • 1970-01-01
  • 2019-03-22
相关资源
最近更新 更多