0

我正在使用 RNBlurModalView ( https://github.com/rnystrom/RNBlurModalView ) 来模糊我的模态视图的背景。问题是当我滚动我的表格视图时,屏幕截图也不会滚动。当您滚动时,模糊最终会消失。我知道我需要使用表格视图的内容偏移量,但不确定如何在现有代码中实现它

RNBlurModalView.m

#pragma mark - UIView + Screenshot

@implementation UIView (Screenshot)

- (UIImage*)screenshot {

    UIGraphicsBeginImageContext(self.bounds.size);
    [self.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    // hack, helps w/ our colors when blurring
    NSData *imageData = UIImageJPEGRepresentation(image, 1); // convert to jpeg
    image = [UIImage imageWithData:imageData];

    return image;
}

@end

还有我实现视图的代码

- (IBAction)locationPressed:(id)sender {

   UIStoryboard *storyBoard = [self storyboard];
    HomeViewController *homeView  = [storyBoard instantiateViewControllerWithIdentifier:@"HomeViewController"];

    RNBlurModalView *modal = [[RNBlurModalView alloc] initWithViewController:self title:@"Hello world!" message:@"Pur your message here."];
    [modal show];


    [self presentPopupViewController:homeView animationType:MJPopupViewAnimationSlideBottomBottom];

有任何想法吗?

谢谢。

4

1 回答 1

0

好的,我认为问题在于,当您调用[[RNBlurModalView alloc] initWithViewController:self title:@"Hello world!" message:@"Pur your message here."];该方法时,会将自身添加到给定控制器的视图中:

- (id)initWithViewController:(UIViewController*)viewController view:(UIView*)view {
    if (self = [self initWithFrame:CGRectMake(0, 0, viewController.view.width, viewController.view.height)]) {
        [self addSubview:view];
...
}

所以另一个问题是,当你只有一个简单的表时使用 UITableViewController 是可以的,但是当你想添加其他视图时它就没有那么好用了,所以试试这个:

修改您的 viewDidLoad 看起来像这样:

- (void)viewDidLoad
{
    [super viewDidLoad];

    // create a new view to lay underneath the UITableView
    UIView *view = [[UIView alloc] initWithFrame:self.view.frame];
    view.autoresizingMask = self.view.autoresizingMask;
    // add the uiTableView as a subview
    [view addSubview:self.tableView];
    self.view = view;
    self.tableView.frame = view.bounds;
}

它正在创建一个 UIView 并将其放在 UITableView 下方。

下次您需要的不仅仅是常规的 UITableView 考虑使用 UIViewController,而将 UITableView 作为子视图。

于 2013-05-16T04:13:56.050 回答