我是一名非常初学的程序员,我正在努力寻找最简单的方法。我之前从未做过任何关于动画的事情。我想尝试在我的应用程序中为图像设置动画,但我遇到了一些问题。这是以前我建议使用的代码(来自不同的问题):
imageView.image = yourLastImage;
// Do this first so that after the animation is complete the image view till show your last image.
NSArray * imageArray = [[NSArray alloc] initWithObjects:
[UIImage imageNamed:@"image1.png"],
[UIImage imageNamed:@"image2.png"],
[UIImage imageNamed:@"image3.png"],
[UIImage imageNamed:@"image4.png"],
nil];
// Note: here you may instead want to use something like [UIImage imageWithContentsOfFile:[self localImagePath:NO]] instead depending upon your targeted iOS version.
UIImageView * animatedImageView = [[UIImageView alloc] initWithFrame:
CGRectMake(100, 125, 150, 130)];
animatedImageView.animationImages = imageArray;
animatedImageView.animationDuration = 1.1;
myAnimation.animationRepeatCount = 1;
animatedImageView.contentMode = UIViewContentModeBottomLeft;
[self.view addSubview:animatedImageView];
[animatedImageView startAnimating];
嗯,首先,这是否实用?我想要动画从屏幕中间到屏幕底部的内容。这是否意味着我必须拥有500张图像,每张图像相距1个像素?什么是最佳像素间隔,使其看起来流畅均匀,不需要大量工作?有没有比上面的方式更好的动画方式?是否有一个程序可以帮助制作动画,以后可以添加到Xcode中?
另外,有人可以解释上面的代码吗?我是动画新手,我真的不明白这一切意味着什么。
对不起,如果这是一个愚蠢的问题,我在开幕式上说我是初学者。感谢您提供的任何帮助!
答案 0 :(得分:30)
对于大多数动画,您只需更改UIView
动画块内视图的属性即可。 UIView
类文档列出了哪些属性是可动画的。
[UIView animateWithDuration:0.5f animations:^{
aView.frame = CGRectOffset(aView.frame, 0, 250);
}];
这是一个示例项目,演示了按下按钮时如何触发动画。您可以将此动画代码放在许多其他位置,因此除非您提供有关所需内容的更多详细信息,否则您的问题在哪里放置代码的答案不是很好。
https://github.com/MaxGabriel/AnimationDemonstration
您正在采取的方法是为UIImageView
制作动画。我从来没有这样做,但我的理解是,就像制作动画GIF一样。对于移动视图或淡出视图等内容,您需要使用上面显示的动画块方法。
答案 1 :(得分:1)
在iOS中制作动画很简单。
{{1}}
答案 2 :(得分:0)
以下代码对我有用,可以在打开键盘或其他东西时移动视图。
public class MyPagedListAdapter extends PagedListAdapter<String, MyPagedListAdapter.VH> {
private LayoutInflater inflater;
protected MyPagedListAdapter(LayoutInflater inflater) {
super(DIFF_CALLBACK);
this.inflater = inflater;
}
@NonNull
@Override
public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.item_text, parent, false);
return new VH(view);
}
@Override
public void onBindViewHolder(@NonNull VH holder, int position) {
holder.setData(getItem(position));
}
public class VH extends RecyclerView.ViewHolder {
private final TextView txt;
public VH(@NonNull View itemView) {
super(itemView);
txt = itemView.findViewById(R.id.txt);
}
public void setData(String text) {
txt.setText(text);
}
}
private static DiffUtil.ItemCallback<String> DIFF_CALLBACK = new DiffUtil.ItemCallback<String>() {
@Override
public boolean areItemsTheSame(@NonNull String oldItem, @NonNull String newItem) {
return oldItem.equalsIgnoreCase(newItem);
}
@Override
public boolean areContentsTheSame(@NonNull String oldItem, @NonNull String newItem) {
return oldItem.equalsIgnoreCase(newItem);
}
};
}
希望也可以帮助您:D