【问题标题】:Make an UIImageView Fullscreen制作一个 UIImageView 全屏
【发布时间】:2014-04-16 07:01:48
【问题描述】:

我正在尝试让图像在点击时全屏显示,这听起来并不复杂。

检测到点击后它当前正在执行的工作:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint touchLocation = [touch locationInView:self.view];

if (self.contentView.frame.origin.y >= 0 && CGRectContainsPoint(self.bottleImageView.frame, touchLocation)) {
    [UIView animateWithDuration:0.5 delay:0 options:0 animations:^{
        [bottleImageView setFrame:[[UIScreen mainScreen] bounds]];
        bottleImageView.backgroundColor = [UIColor blackColor];
    }completion:^(BOOL finished){}];
...
}

虽然有问题。我需要将 UIImageView 放在前面,以便它在其他视图前面绘制图像。当我将[self.view bringSubviewToFront:bottleImageView]; 添加到组合中时(在动画块之前、完成块中或此代码之后),情况发生了变化。第一次点击时,UIImageView 背景变为黑色,第二次点击时视图扩展为全屏。

我确信这只是我忽略的一些小而愚蠢的事情。

编辑:我已经添加了触摸代码

编辑 (2): 我可能遗漏了一些重要信息。我想我会为这个项目尝试自动布局。我猜那里有什么东西不能让一切都按预期工作?

【问题讨论】:

  • 你能发布你的点击检测代码,调用上面的代码吗?

标签: ios objective-c uiimageview


【解决方案1】:

您可以使用MHFacebookImageViewer

为此。使用起来非常简单。

【讨论】:

  • 嗨,这看起来不错,我可能会使用它。我有点困惑为什么上面的代码不起作用:s
  • 为我工作! :) 集成很容易,它还具有图像缩放和轻弹关闭功能。但我不得不注释掉一些代码以删除 AFNetworking 依赖项。
【解决方案2】:

也许你的视图内容模式有误,在设置图片后添加这一行:

bottleImageView.contentMode = UIViewContentModeScaleAspectFit;

【讨论】:

  • 您好,恐怕这不起作用。问题不在于改变图像的大小,更在于它在视图层次结构中的位置。谢谢
  • 这不仅是为了改变尺寸,它还修改了图像视图在形状改变时的行为方式。在这种情况下,它应该重绘。也许尝试添加 [imageview setNeedsDisplay]?我不确定我是否理解你的问题了。
【解决方案3】:

好的。上面的代码很适合展开视图。

我发现自动布局限制存在问题。我无法确切告诉您我所做的更改解决了这个问题 - 但是几个小时的调试限制解决了这个问题。

不过,我找到了一个更好的解决方案 - Facebook POP 效果更好,而且看起来更流畅。

【讨论】:

    【解决方案4】:

    添加

    [self.view bringSubviewToFront:bottleImageView] 
    

    添加后立即

    [self.view addSubview:bottleImageView]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多