【问题标题】:iPhone:Set imageView in transparent portion of the ImageiPhone:在图像的透明部分设置 imageView
【发布时间】:2017-01-05 06:32:02
【问题描述】:

我正在制作一个应用程序,其中允许用户首先选择一个相框,然后他/她必须从图库中为该相框选择 2 张照片(相框是包含两个透明孔的图像我们必须设置选定的照片),他/她可以根据它们裁剪这些图像。在他/她完成裁剪后,将打开一个带有所选相框的新视图,并且将设置这两个裁剪的图像那两个透明的整体。我已经完成了,直到裁剪完成。

问题

如何在透明部分设置这两个图像,以便它在所有设备中正确显示,并且透明部分根据用户将选择的相框不断变化。

【问题讨论】:

  • 是否有任何图书馆或任何东西可以帮助我完成任务?请帮助我,自从过去 15 天以来,我一直陷入这个问题。 :(
  • 上图右边是PNG文件,中心部分是透明的?
  • 是的。我想将用户从图库中选择的图像设置为这些透明部分。 @CodeChanger
  • 我们有每张图片透明部分的位置和大小数据吗?
  • 这就是我想知道的。如果我们得到透明部分的位置和大小,那么我可以通过创建各自大小的 imageViews @KrishnaCA 将这两个用户选择的图像放在那个位置跨度>

标签: ios objective-c iphone swift


【解决方案1】:

在视图中添加新图像。 添加手势以移动和调整(缩放)新图像,为新图像设置完美位置(即在框架的中心),然后将图像视图发送到主图像视图的背面。 之后渲染两个视图,并使用 UIGraphicsContext 制作新图像。

我有渲染代码给你。

    UIGraphicsBeginImageContextWithOptions(self.viewCombineImages.bounds.size, false, 0.0)
    self.viewCombineImages.layer.render(in: UIGraphicsGetCurrentContext()!)
    let image = UIGraphicsGetImageFromCurrentImageContext()!
    UIGraphicsEndImageContext()

【讨论】:

  • 但是我的应用的流程是这样的向右侧的图像做手势。 @Sagar Chauhan
  • 好吧,你的方式是对的。但是你怎么知道你的imageView中的透明视图位置在哪里,每次你都不能手动设置,因为每次图像都不一样。 @Abhijeet。
  • 如果您不希望用户在裁剪后与图像交互,则只允许将图像移动到位置。因此用户可以准确地设置您要查找的内容。
【解决方案2】:

根据您的要求,您可以在此处设置 3 个 ImageView。

  1. 带有 Person1 Image 的图像视图。
  2. 带有 Person2 图像的图像视图。
  3. 带框架图像的图像视图。

所以子视图的堆栈就像UIViewController->UIView->Person Image View1, Person ImageView 2 -> Frame Image View

喜欢这张截图。

并且不需要透明图像位置,只需将图像大小设置为框架的一半并将其设置在框架图像视图下方,您可以像我的屏幕截图一样实现这一点。

【讨论】:

  • 这个想法只适用于这个框架。如果用户选择另一个框架怎么办??那么透明区域的位置也会改变吧?那么这将无法正常工作。 @CodeChanger
  • 在我看来,所有框架尺寸都将相同,并且您可以实现这一点,否则它的外观与不同的不同尺寸相连。
  • 在以上 2 帧样本中,两个尺寸都相同,这是正确的方法。
【解决方案3】:

如果上面的框架是.png文件,可以使那些部分透明。我以为你需要三个 UIImageViews。

上-装饰框 under - person1 的图像视图/person2 的图像视图。

如果用户选择两个图像,则将每张图片应用到图像视图上。 并调整那些大小和坐标。你可以使用

[person1ImageView setFrame:CGRectMake(x,y,width,height)]; 

另外,您可以使用

旋转它们
person1ImageView.transform =  CGAffineTransformMakeRotation(radians); 

【讨论】:

  • 但是我怎样才能得到上面 png 文件透明部分的 x,y 位置和宽度和高度呢? @丽莎
  • 谁能给我一个与我的问题相关的正确答案??
猜你喜欢
  • 2020-05-31
  • 2019-09-10
  • 2012-02-24
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
  • 2019-09-21
  • 1970-01-01
  • 2010-12-02
相关资源
最近更新 更多