Ios 如何使UIImage在滚动时淡入淡出?
我有一个弹性头,我做了以下教程。不管怎么说,它工作得很好,但我很难让它上面的UIView随着视图的拉伸而淡出,随着视图恢复正常而恢复到原始alpha。我能想到的最好的办法是:Ios 如何使UIImage在滚动时淡入淡出?,ios,swift,uiscrollview,uiimageview,uiscrollviewdelegate,Ios,Swift,Uiscrollview,Uiimageview,Uiscrollviewdelegate,我有一个弹性头,我做了以下教程。不管怎么说,它工作得很好,但我很难让它上面的UIView随着视图的拉伸而淡出,随着视图恢复正常而恢复到原始alpha。我能想到的最好的办法是: override func scrollViewDidScroll(scrollView: UIScrollView) { updateHeaderView() var offset = scrollView.contentOffset.y
override func
scrollViewDidScroll(scrollView: UIScrollView) {
updateHeaderView()
var offset = scrollView.contentOffset.y
if offset < -170 {
headerBlurImageView?.alpha = max(0.0, offset - 95/35)
} else {
self.headerBlurImageView?.alpha = 1
}
}
看看UIScrollViewDelegate协议。有许多消息与开始和结束拖动以及减速有关。您应该能够将视图控制器设置为滚动视图的委托,并实现其中的一些方法。我将创建一个UIView动画,在滚动开始时将标题的alpha向下设置动画,另一个UIView动画在滚动结束后(或减速结束后)将其设置回不透明状态。将两个UIImageView放置在彼此的顶部(在本例中,bg位于bgB之下),然后将UIScrollview放置在最顶部。在scrollviewDidScroll方法中,放置以下代码:
float off = cv.contentOffset.x;
float floatedIndex = off/cv.frame.size.width;
int left = floatedIndex;
int right = ceil(floatedIndex);
if (right>events.count-1){ right=events.count-1; }
float alpha = floatedIndex-left;
UIImage * leftImage = nil;
UIImage * rightImage = nil;
NSDictionary * ld = events[left];
NSDictionary * rd = events[right];
NSObject * o = ld[@"artwork"];
if ([o isKindOfClass:[UIImage class]]){
leftImage = ld[@"artwork"];
}
o = rd[@"artwork"];
if ([o isKindOfClass:[UIImage class]]){
rightImage = rd[@"artwork"];
}
bg.image = leftImage;
bgB.image = rightImage;
bgB.alpha = alpha;
“left”和“right”整数对应于数组中的索引。有一行代码检查scrollview是否不能意外地“太右”,即试图在数组边界之外找到索引
然后,我从一个名为events的数组中提取数据,并检查结果字典中是否存在图像(但可以将其用于图像的直接数组),更新两个UIImageView,然后根据滚动的内容偏移量淡入淡出顶部的一个(bgB)
“动画”与用户交互相关,这很好,但有时最好将动画块与另一个scrollview委托方法一起使用。self.view.alpha=…@NorthBlast已经在else条件下这样做了,但转换并不平滑:(使用UIView动画.)。。
float off = cv.contentOffset.x;
float floatedIndex = off/cv.frame.size.width;
int left = floatedIndex;
int right = ceil(floatedIndex);
if (right>events.count-1){ right=events.count-1; }
float alpha = floatedIndex-left;
UIImage * leftImage = nil;
UIImage * rightImage = nil;
NSDictionary * ld = events[left];
NSDictionary * rd = events[right];
NSObject * o = ld[@"artwork"];
if ([o isKindOfClass:[UIImage class]]){
leftImage = ld[@"artwork"];
}
o = rd[@"artwork"];
if ([o isKindOfClass:[UIImage class]]){
rightImage = rd[@"artwork"];
}
bg.image = leftImage;
bgB.image = rightImage;
bgB.alpha = alpha;