- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个使用 AutoLayout 和约束设置的 UIImage View 。我使用
使图像适合 ImageView self.selectPhoto.contentMode = UIViewContentModeScaleAspectFit;
NSLayoutConstraint *topConstraint = [NSLayoutConstraint constraintWithItem:self.topLayoutGuide attribute:NSLayoutAttributeBottom relatedBy:0 toItem:self.selectPhoto attribute:NSLayoutAttributeTop multiplier:1 constant:-10];
NSLayoutConstraint *bottomConstraint = [NSLayoutConstraint constraintWithItem:self.selectPhoto attribute:NSLayoutAttributeBottom relatedBy:0 toItem:self.caption attribute:NSLayoutAttributeTop multiplier:1 constant:-35];
[self.view addConstraint:topConstraint];
[self.view addConstraint:bottomConstraint];
self.selectPhoto.image= existingImage;
效果很好。因为 UIImageView 是使用 AutoLayout 设置的,而 UIImage 是使用 Aspect Fit 显示的,所以我不知道图像的确切框架。我希望图像的左上角在 ImageView 中位于 0,0,因为我有另一个较小的图像,用户可以在它上面移动。
例如:由于瀑布图像的方向,左上角在 UIImageView 中为 0,23ish。当图像高度 > 图像宽度时,( ImageView 的)原点为 66,0。这是一个问题,因为我想绘制两个图像的用户上下文并另存为新图像。我不能这样做,因为我不知道 2 个月的图像在瀑布图像上的位置,因为我不知道瀑布图像的来源。我知道 2 个月的图像在 ImageView 中的位置,但图像并没有占据整个 ImageView 。由于 AutoLayout 和 Aspect Fit,它会根据图像的大小/方向而有所不同。我将 2Months Pan 手势添加到瀑布 ImageView 中,但起源不一致。附加到 2Months View 的平移手势代码如下
-(void) handlePan:(UIPanGestureRecognizer *)recognizer {
CGPoint translation = [recognizer translationInView:self.view];
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
self.itemToEdit.stickerLocation= recognizer.view.frame;
NSLog(@"The location of the sticker is %f and y is %f", recognizer.view.frame.origin.x, recognizer.view.frame.origin.y);
}
有没有办法让 UIImageView 适合实际显示的 UIImage?基本上我想做一些像 self.selectPhoto.frame = self.selectPhoto.image.frame
我做不到。
总结:在使用 AutoLayout 和 Aspect fit 放置 imageView 后,我如何知道它的绝对原点?
最佳答案
基于 this Stack Overflow answer ,我们可以通过访问其 size
属性来获取 UIImage
的大小。
因此,从这里开始,最简单的方法是使用自动布局。
使用 ImageView 设置 Storyboard或 xib。继续,给你的 ImageView 一个明确的宽度和高度约束。现在,填写 ImageView 周围的其余约束。但是请记住,当我们将不同的图像放入 ImageView 时, ImageView 上的显式宽度/高度会发生变化,因此我们的其他自动布局约束必须牢记这一点。
现在,为我们的显式高度和宽度约束添加一个 IBOutlet
。这可以像我们为任何其他 UI 元素添加 socket 一样完成。只需 Ctrl+ 从 IB 中的约束拖动到源文件。
现在我们有这样的东西:
@property (nonatomic, weak) NSLayoutConstraint *imageHeight;
@property (nonatomic, weak) NSLayoutConstraint *imageWidth;
现在,每次我们更改 ImageView 的图像时,我们都会更新这些约束的常量
部分:
self.imageHeight.constant = newImage.size.height;
self.imageWidth.constant = newImage.size.width;
现在,使用上述方法意味着我们的 ImageView 将始终与我们的图像具有完全相同的大小。这可能意味着它延伸到屏幕边界之外或只填满屏幕的一小部分。
另一种方法是使用纵横比约束。再一次,首先给你的 ImageView 一个宽高比约束,将它的高度与它的宽度相关联。现在四处走走,为 View 设置其余的自动布局约束。也许您希望将左上角固定到特定位置。
在执行此操作时,您可能还想为 ImageView 的宽度和高度设置一些小于或等于约束。这些约束将确保无论图像的大小或形状如何, ImageView 都将小于您指定的大小(因此留在屏幕上)。
再次为您的纵横比约束添加一个导出。每次我们更改 ImageView 的图像时,我们都会修改它:
@property (nonatomic, weak) NSLayoutConstraint *imageRatio;
现在,我们将修改比率约束的 multiplier
属性,而不是 constant
属性(我们希望将其保留为零)。宽度是在顶部还是底部完全取决于约束的连接方式,因此可能需要反复试验。但它的要点是,我们想要这样的东西:
self.imageRatio.multiplier = newImage.size.height / newImage.size.width;
(同样,您可能需要在此处翻转高度/宽度。)
关于ios - 使 UIImageView 适合 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30867263/
我一直在尝试实现这一点,但找不到任何可以在删除它们时像 iPhone 应用程序抖动一样抖动它的代码! CABasicAnimation *animation =
我有一个代码在 UIImageView.isAnimating 为 false 之后执行一些操作 但有趣的是它永远不会出错,它总是处于 YES 状态。 "isAnimating return is f
我的 UIViewController 中有一个 UIImageView。我在上面设置了一个图像。我做了如下旋转。 - (void) runSpinAnimationOnView:(UIImageVi
我有一个带有图像的 UIImageView。我在显示之前旋转了图像,方法是将 UIImageView 的变换属性设置为 CGAffineTransformMakeRotation(angle),其中角
如果有解决我的问题的答案,请给我一个链接。否则这是我的问题: 我目前正在运行 Swift 2.0 (Xcode 7) Sprite Kit Game,想知道 UIImageView 是否可以跟随另一个
我不知道我的想法是否正确,但我的问题是我在 UITableView 中有自定义单元格(看起来像汽车),每个单元格包含 2 个 UIImageViews(车轮图像),我需要旋转当 UITableView
我想知道是否有办法使用透明的 UIImageView(框 C)来剪辑移动到其上方的某些图像。 在我的示例中,我将均为 UIImageView 的框 A 和 B 移向透明的框 C。一旦盒子发生碰撞,我只
我有一个带有固定图像的 UIImageView。我想在顶部添加第二个 UIImageView,我打算旋转它。我需要在运行时创建顶部图像。我找不到在哪里处理透明度。它在 UIImage 中还是在 UII
我有一个要求,我有一个 UIImageView 在另一个之上。当用户在其上“绘制”时,我需要使顶部透明。实际上,不是绘制用户将要做的事情,而是“删除”顶 View ,让下面的 View 显示出来。 我
您好,我有一个 UIImageView,它部分在屏幕上,部分在屏幕外。 我想围绕屏幕外的一个点( View 的中心)旋转 View 。 我该怎么做? fullRotationAnimation
我有两张图片。一个图像是矩形第二个是三角形我想使用一根手指或触摸事件从矩形图像的中心点旋转三角形图像。 最佳答案 好吧,如果您希望图像围绕矩形中心点以任意大小的圆旋转,那么数学会变得相当复杂,但是一个
我想知道是否可以将更多的 UIImageView 分组到一个 ImageView 中。例如,如果我有 4 个 imageView,并且我想以完全相同的方式为它们制作动画,我可以将它们组合成一个,然后为
我正在代码中创建多个 UIImageView,并且想要移动和删除我选择的任何 UIImageView。现在,我只能移动使用 UIPanGestureRecognizer 创建的最后一个 UIImage
现在,我已经让它能够在我的应用程序上移动图像、缩放图像、捏合图像……应有尽有。但我的问题是,当一个 UIImageView 位于另一个 UIImageView 时,我如何才能让应用程序注册? 最佳答案
我有一个 UIImageView 应该从 size (0,0) --> (93,75) 开始动画 我有以下内容 [UIView animateWithDuration:0.5 delay:0 op
我这里的问题应该是一个相当简单的问题。基本上,我试图将一个对象 (UIImageView) 从 A 点(它在 Storyboard中设置的位置)移动到我以编程方式定义的 B 点。 我第一次通过这个导致
我有一个带有包含图像的单元格的 UITableView。我想从服务器下载一个大图像并将其插入到我的单元格中。 我的 UITableViewCell 有一个固定的高度并且填满了屏幕的整个宽度。最好的解决
当用户选择新的图像过滤器时,我尝试对图像进行交叉淡入淡出。 所以我在第一个ImageView之上创建了第二个ImageView,并对顶部 View 的alpha进行动画处理以显示或隐藏底部 View
我有一个 UIScrollView,其中包含 n 个占位符 UIImageView。下面我有一个 StackView,其中包含 10 个图像,用户可以从中选择并将图像拖动到上面的特定占位符 Image
尝试设置“选定框”图形的边界的多种组合,该图形仅显示用户在 UIImageView 中触摸的位置。它仍然继续坚持 super View 坐标系 class ViewController: UIView
我是一名优秀的程序员,十分优秀!