如何使 UIButton 与 UIScrollView 一起移动
Posted
技术标签:
【中文标题】如何使 UIButton 与 UIScrollView 一起移动【英文标题】:How to make UIButton move with UIScrollView 【发布时间】:2015-08-14 19:40:17 【问题描述】:我有一个UIScrollView
菜单,它通过激活UIButton
在视口上方和下方移动。问题是当我按下按钮以使UIScrollView
菜单上下移动时,该按钮仅停留在一个位置。我希望UIButton
在激活时说出UIScrollView
菜单的上方。这是它的样子,“开放”是UIButton
:
这里是来自viewcontroller.m
的UIScrollView
和UIButton
的动画代码。
#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 中的框架....? 不,这不是我的代码的一部分。 【参考方案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”吗?以上是关于如何使 UIButton 与 UIScrollView 一起移动的主要内容,如果未能解决你的问题,请参考以下文章
如何使 UIButton 导致 UITextField 开始编辑文本
按下时如何使 UIButton 收缩为 UIActivityIndicator?