回答:
Objective-Cの以下のステートメントのいずれかを使用して、スクロールビューのあるポイントまでスクロールできます。
[scrollView setContentOffset:CGPointMake(x, y) animated:YES];
またはスウィフト
scrollView.setContentOffset(CGPoint(x: x, y: y), animated: true)
Appleの「Scroll View Content」のガイドも参照してください。
でスライドショーを行うにはUIScrollView
、すべての画像をスクロールビューに配置し、繰り返しタイマーを設定してから-setContentOffset:animated:
、タイマーが作動するようにします。
しかし、より効率的なアプローチは、2つの画像ビューを使用し、遷移を使用してそれらを交換するか、タイマーが作動したときに単に場所を切り替えることです。詳細については、iPhone画像のスライドショーを参照してください。
(myScrollView.contentOffset.x +320)
。
(myScrollView.contentOffset.x +320)
キーが嘘です!
contentOffset:
はcontentSizeもオフセットするため、望ましくない場合があります。スクロールのみを行うには、を使用しますscrollRectToVisible:
。
CGPointMake
SwiftのようにCヘルパー関数を使用しないでください。単に直接スウィフト構造体を構築する:CGPoint(x: 0, y: 44)
アニメーションの継続時間とスタイルを制御したい場合は、次の操作を実行できます。
[UIView animateWithDuration:2.0f delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
scrollView.contentOffset = CGPointMake(x, y);
} completion:NULL];
持続時間(2.0f
)とオプション(UIViewAnimationOptionCurveLinear
)を調整して味わってください!
別の方法は
scrollView.contentOffset = CGPointMake(x,y);
CGPoint
必要がありますCGPointMake
。
このトピックが9歳で、実際の簡単な答えはここにないことに驚いています。
あなたが探しているのはscrollRectToVisible(_:animated:)
です。
例:
extension SignUpView: UITextFieldDelegate {
func textFieldDidBeginEditing(_ textField: UITextField) {
scrollView.scrollRectToVisible(textField.frame, animated: true)
}
}
それがすることはまさにあなたが必要とすることであり、それはハッキーよりもはるかに優れています contentOffset
このメソッドはコンテンツビューをスクロールして、rectで定義された領域がスクロールビュー内に表示されるようにします。領域がすでに表示されている場合、メソッドは何もしません。
送信元:https : //developer.apple.com/documentation/uikit/uiscrollview/1619439-scrollrecttovisible
[Scrollview setContentOffset:CGPointMake(x, y) animated:YES];
- (void)viewDidLoad
{
[super viewDidLoad];
board=[[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.height, 80)];
board.backgroundColor=[UIColor greenColor];
[self.view addSubview:board];
// Do any additional setup after loading the view.
}
-(void)viewDidLayoutSubviews
{
NSString *str=@"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
index=1;
for (int i=0; i<20; i++)
{
UILabel *lbl=[[UILabel alloc]initWithFrame:CGRectMake(-50, 15, 50, 50)];
lbl.tag=i+1;
lbl.text=[NSString stringWithFormat:@"%c",[str characterAtIndex:arc4random()%str.length]];
lbl.textColor=[UIColor darkGrayColor];
lbl.textAlignment=NSTextAlignmentCenter;
lbl.font=[UIFont systemFontOfSize:40];
lbl.layer.borderWidth=1;
lbl.layer.borderColor=[UIColor blackColor].CGColor;
[board addSubview:lbl];
}
[NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(CallAnimation) userInfo:nil repeats:YES];
NSLog(@"%d",[board subviews].count);
}
-(void)CallAnimation
{
if (index>20) {
index=1;
}
UIView *aView=[board viewWithTag:index];
[self doAnimation:aView];
index++;
NSLog(@"%d",index);
}
-(void)doAnimation:(UIView*)aView
{
[UIView animateWithDuration:10 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
aView.frame=CGRectMake(self.view.frame.size.height, 15, 50, 50);
}
completion:^(BOOL isDone)
{
if (isDone) {
//do Somthing
aView.frame=CGRectMake(-50, 15, 50, 50);
}
}];
}