【发布时间】:2016-01-23 14:28:14
【问题描述】:
有一些帖子,UIWebView底部是黑色的,可以通过两种简单的方式解决。
1. Clear Background of UIWebView
2. Set Opaque to NO.
但是,这只解决了静态 UIWebView 的问题,它不会改变其 Frame 或 Constraints。
就我而言,我有一个 UIWebView,它非常简单地拖放到 Storyboard 的 ViewController 的 View 上。无继承。我将背景设置为清除并将不透明设置为 NO。
到目前为止看起来还不错。但是当我应用动画时,使用 Facebook POP 库
1. SetOpaque = YES, With Animation is clips the UIWebView's content showing black color.
2. SetOpaque = NO, With Animation is clips the UIWebView's content showing nothing (a View or something comes in front)
-(void) setConstraint {
_topConstraintValue = self.topConstraint.constant - 200;
NSLog(@"Value is UP %f " ,_topConstraintValue);
}
- (IBAction)animateUp:(UIButton *)sender {
[self setConstraint];
[VSAnimation popChangeConstraintForBasicAnimation:self.topConstraint begin:0.5 newConstant:_topConstraintValue withDuartion:0.5 isEaseInAnimation:NO withCompletionBlock:nil];
}
-(void) setConstraintDown {
_topConstraintValue = 0;
_topConstraintValue = self.topConstraint.constant;
NSLog(@"Value is Down %f " ,_topConstraintValue);
}
- (IBAction)animateDown:(UIButton *)sender {
[self setConstraintDown];
[VSAnimation popChangeConstraintForBasicAnimation:self.topConstraint begin:0.5 newConstant:[self getAnimatableConstraint:_topConstraintValue] withDuartion:0.5 isEaseInAnimation:NO withCompletionBlock:nil];
}
-(float)getAnimatableConstraint:(float)constant{
return constant+200.0;
}
-(float)getReverseAnimatableConstraint:(float)constant{
return constant-200.0;
}
其中,VS里面的方法如下
//VSAnimation.m
+(void)popChangeConstraintForBasicAnimation:(NSLayoutConstraint *) layoutConstraintToPopChange begin:(float) beginTime newConstant:(CGFloat) newConstant withDuartion:(float)duration isEaseInAnimation:(BOOL)isEaseIn withCompletionBlock:(void (^)(POPAnimation *anim, BOOL finished)) completitionBlock{
NSString *key = [NSString stringWithFormat:@"constraints_changed_%@", layoutConstraintToPopChange];
POPBasicAnimation *basicAnim = [layoutConstraintToPopChange pop_animationForKey:key];
if(basicAnim){
basicAnim.toValue = @(newConstant);
basicAnim.completionBlock = completitionBlock;
}else{
basicAnim = [POPBasicAnimation animationWithPropertyNamed:kPOPLayoutConstraintConstant];
if(isEaseIn)
basicAnim.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
else
basicAnim.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
basicAnim.toValue = @(newConstant);
basicAnim.completionBlock = completitionBlock;
basicAnim.beginTime = [self timeWithDelay:beginTime];
basicAnim.delegate = self;
basicAnim.duration = duration;
[layoutConstraintToPopChange pop_addAnimation:basicAnim forKey:key];
}
}
底部的这条黑线/透明线是什么。 当为 UIWebView 设置动画时,如何阻止这种情况增加。
图片:
【问题讨论】:
-
UIWebView 是一个遗留 API,有很多问题。如果可以的话,最好使用 WKWebView。
-
@BorisVerebsky,WebKit 也一样。
-
你可以简单地将UIWebView的背景颜色设置为白色吗?
-
不,它的反应是一样的。我做到了,我对 NO 不透明。同样的事情,出现了一些层,@DavidCheung,我应该上传一个演示吗?
-
@VS,是的,请做,设置不透明为 YES 和白色 UIWebView 背景怎么样?
标签: ios objective-c uiwebview core-animation facebook-pop