iphone - 如何将 UIImageView 裁剪成自定义形状

标签 iphone objective-c ios xcode uiimageview

用户是否可以在他们希望裁剪到的 UIImageView 位周围画一条虚线(圆圈),然后为 UIImageView调整到那些点?这有点像 Photoshop 中的套索/选取框效果:

enter image description here

最佳答案

更新:从 iOS 8.x 开始,UIImageView 提供了一个 maskView 属性。只需准备一个带有一些不透明像素的图像,使用该 mask 图像创建另一个 ImageView ,并将此 mask ImageView 设置为 maskView。 mask 图像中的不透明像素将显示在底层图像中。

    UIImageView *maskView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"somemask"]];
    maskView.frame = imageView.bounds;
    imageView.maskView = maskView;
    // imageView will be masked by maskView

.

原始答案

还有很多工作要做,但这里有一个高级大纲:

  1. 创建一个将成为 mask 的空图像
  2. 根据用户输入在该图像中构建路径
  3. 填充路径以将其变成 mask
  4. 将蒙版应用于 ImageView 的图像

创建图像:这里的一个简单想法是随项目一起发送黑色图像。它的大小应该匹配用户可以选择的最大区域。将图像读入内存 (UIImage imageNamed:) 并通过调用 UIGraphicsBeginImageContext 将其设置为绘图上下文。

创建路径:(see apple docs)。当用户开始抚摸该区域时,调用 CGContextBeginPath,然后跟随用户手势,对触摸进行采样并通过调用 CGContextMoveToPoint 作为 touchesMoved 添加小段。

创建 mask :要将路径变成 mask ,您需要黑色背景和白色填充的路径。如果您从黑色图像开始,则只需进行填充。请参阅有关执行此操作的相同苹果指南。

最后,您将把这个 mask 应用到您的 imageView 的图像上。 Here's a decent reference为此。

关于iphone - 如何将 UIImageView 裁剪成自定义形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13015676/

相关文章:

iphone - 如何调整 UITableView 的 tableHeaderView 的大小?

ios - 调用中的额外参数

iphone - 我们可以使用核心数据来存储房地产吗?

iphone - 每次打开我的应用程序时打开 View ,仅当用户选择时

iphone - 在 iOS 中访问设备控制台日志的 Objective C 代码

iphone - 强制调用 UIViewController 子类方法

objective-c - 是否可以自定义 CNContactPickerViewController?

ios - UIPageViewController 页面指示器位置

iphone - 当 addSubview 和 release 在添加的 View 中无法正常工作时

ios - 创建飞行动画