【问题标题】:UIWebView black color at bottom increases with Animation?UIWebView底部的黑色随着动画而增加?
【发布时间】: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


【解决方案1】:

@VS,看了你的源码后,我看到第二个 webview 的约束似乎设置错误。在我删除高度约束WV2.height = 0.095 * height 后,问题就消失了。您必须正确设置 WV2 的高度约束。

【讨论】:

  • 亲爱的,我正在设置比例约束,所以它可以根据运行代码的设备而改变。那么,为什么这个高度会导致问题呢?
猜你喜欢
  • 2013-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-29
  • 2018-01-29
相关资源
最近更新 更多