- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 ImageView ,它开始使用 clipsToBounds 裁剪图像并将内容模式设置为“比例纵横比填充”,我希望它将图像“放大”到整个图像。如果 clipsToBounds=NO 是一个动画属性,那将正是我想要的,但它似乎不是。有没有办法让它动画化?
如果不是,另一种方法是调整 View 的大小,使其与图像大小的宽高比相同,同时保持它不小于 ImageView 开始时的大小(即高度或宽度的最小 increate,不减少到任一个)。我不确定这样做的最佳方法,考虑到图像可能比 ImageView 大得多或小得多,并且图像的宽高比几乎可以是任何东西(但通常是 iOS 设备相机照片) .
更新 1:layer.masksToBounds 似乎可以工作,文档说它是可动画的,但我的代码似乎不起作用:
CABasicAnimation *layerAnim = [CABasicAnimation animationWithKeyPath:@"masksToBounds"];
layerAnim.fromValue = @(YES);
layerAnim.toValue = @(NO);
layerAnim.removedOnCompletion = YES;
layerAnim.duration = 1.0;
[_imageView.layer addAnimation:layerAnim forKey:@"masksToBounds"];
我在运行这个层动画的同时运行一个 UIView block 动画,它正在改变 ImageView 的框架和变换,如果这很重要的话。
更新 2:我在 UIView 动画 block 中没有这个核心动画,根据文档,它应该是。我已将上面的代码移动到动画 block 中,但它仍然没有动画(变化立即发生)。我开始认为“可动画化”仅仅意味着它可以被放置在动画中,而不是它会随着时间的推移而活跃起来。
最佳答案
所以你不想让你的图像变大,而是希望它先被裁剪,然后暴露外面的像素?
您可以使用 Core Animation 和图层蒙版来做到这一点。
这是你要做的:
将 ImageView 的 clipsToBounds 设置为 FALSE,这样图像就会完全显示。
创建一个与整个图像大小相同的 CAShapeLayer。创建一个与初始图像大小相同的矩形贝塞尔曲线路径。将该贝塞尔曲线路径的 CGPath 安装为形状层的路径。
将形状图层的填充颜色设置为不透明颜色
然后安装形状层作为 ImageView 层的 mask 。这将导致图像被裁剪为形状层的形状。
现在,如果您将安装在形状层中的路径更改为与图像完全相同的矩形,系统将为您制作更改动画。
关于iOS 动画 clipToBounds、masksToBounds 或类似的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21742826/
我正在开发 Silverlight 应用程序,我的问题是这样的:我有一个 WrapPanel和内部 WrapPanel我正在添加一些图像。然后,我旋转这些图像 90 度或 -90 度。 因此,如果我的
我正在 map 上绘制线条,我注意到我的注释 View 没有覆盖线条的整个区域(这很好,只要我可以在 View 边界之外绘制)。 这是我正在经历的事情的图片。对于注释 View ,clipToBoun
我有一个非常简单的 UIScrollView,其中包含一些内容(许多 subview )。此 ScrollView 用于显示用户发布的一些帖子(图片+文本)。其中一个 View 实际上是作者的图像,它
我有一个自定义类,它为我的按钮添加了边框,并具有在左上角创建“X”按钮的功能。 第一个问题:为了使 X 按钮出现在图像按钮的边界之外,我必须关闭图像按钮上的 clipToBounds。但这具有让图像穿
我有一个默认隐藏多个标签的自定义单元格(用户在单击该单元格时会看到所有内容)。我正在更改单元格的高度和 cell.clipToBounds = true 以隐藏标签。但这不适用于可编辑的单元格。当我开
我有一个应用程序,它在 WPF 中的 Image 对象内显示图像。该图像包含在其 xaml 如下所示的控件中: 其中两个控件包含在窗口的网格中,如下所示:
我正在尝试查找 ClipToBounds 的等效项在 Windows 运行时中。如果它不存在,是否有办法重新创建此行为? 最佳答案 这是我使用的解决方案: public class Clip {
我有一个“ mask Canvas ”,我正在使用它作为我主要绘画 Canvas 的 OpacityMask 的来源。 我的两个 Canvas 大小相同,但当我开始在 Canvas 边界附近绘画时,我
我有一个 ImageView ,它开始使用 clipsToBounds 裁剪图像并将内容模式设置为“比例纵横比填充”,我希望它将图像“放大”到整个图像。如果 clipsToBounds=NO 是一个动
给定一个非常基本的 Grid,ColumnDefinition 的宽度设置为 *,其中包含的按钮的硬编码宽度属性将被忽略并且这些子元素被剪裁。它们不会被设置为 Auto 的宽度裁剪。 如果在每个 Co
我需要将 UIView 覆盖在 UIPageViewController 上,并希望它能让我关闭 clipsToBounds,然后将交互式边界区域的大小调整为较小的高度,并将另一个 View 放在非交
我不想剪切文本 block 的文本。为此,我将 viewBox.ClipToBounds 设置为 false,但它不起作用。 请告诉我为什么 ClipToBounds=false 在这段代码中不起作用
我试图在高度受限的网格中心放置一个矩形,如下所示: 我希望它看起来像这样: 但它看起来像这样: 我知道我的子矩形更大,它的剪辑是可以理解的,但是,我的 Cli
我有一门课需要 NSString作为参数,使用 Core Text 获取文本的大小,提取每一行并以不同的 x 偏移量渲染文本行,以产生倾斜的效果。 当 Core Graphics 绘制文本行时,我也会
我有一个宽度/高度为 256x256 的 ScrollView 。我有那个 ScrollView 的 subview 在两个方向(左和右)延伸。我将 clipToBounds 设置为 NO,这样我就可
我有 UIScrollView 和其中包含 UIImageView 的对象数量(UIView 组合)。一些 UIImageViews 有圆形边框(为此我使用 myImageView.layer.mas
UITableView放在 UINavigationController将有一个类型为 UINavigationTransitionView 的父 View , 及其 clipToBounds是 tr
我需要在 WPF 中显示工具栏边界外的一些子项(光标悬停时工具栏上的按钮会变大)。 Image 1: Right panel behavior: ClipToBounds="False" 当 Clip
我有两个 UIView。我用一个来容纳另一个,这样我就可以将一个滑入另一个。我遇到了一个问题,即使 subview 被裁剪到其父 View 的边界,它仍然接收触摸事件并阻止访问其他底层 View 。
iOS 7 的重新设计导致 UITableViewCells 的 View 层次结构发生变化。单元格的内容 View 包装在一个名为 UITableViewCellScrollView 的私有(pri
我是一名优秀的程序员,十分优秀!