使用PhotoLibrary私有框架设置iOS墙纸时,裁剪/缩放不起作用[英] Cropping/zooming not working while setting iOS Wallpaper using PhotoLibrary private framework

本文是小编为大家收集整理的关于使用PhotoLibrary私有框架设置iOS墙纸时,裁剪/缩放不起作用的处理方法,想解了使用PhotoLibrary私有框架设置iOS墙纸时,裁剪/缩放不起作用的问题怎么解决?使用PhotoLibrary私有框架设置iOS墙纸时,裁剪/缩放不起作用问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我已经管理(借助此 post) 从 PhotoLibrary 私有框架中打开一个 PLStaticWallpaperImageViewController,它允许直接设置壁纸和锁定屏幕(使用与照片应用相同的 UI).不幸的是,图像裁剪/缩放功能似乎不起作用,因为对图像视图本身的触摸似乎没有通过(触摸取消/设置按钮后主视图也没有正确关闭,但这没那么重要).

我有一个 Xcode 项目演示壁纸设置(可以在模拟器和非越狱设备中运行):

https://github.com/newenglander/WallpaperTest/

代码很基础,涉及到一个继承自PLStaticWallpaperImageViewController的ViewController,并实现了一个类似下面的init方法:

- (id)initWithCoder:(NSCoder *)aDecoder {
    self = [self initWithUIImage:[UIImage imageWithContentsOfFile:@"/System/Library/WidgetResources /ibutton/white_i@2x.png"]];
    self.allowsEditing = YES;
    self.saveWallpaperData = YES;
    return self;
}

(首次启动后需要允许访问照片库,并且出于某种原因,此弹出窗口出现在应用程序后面,而不是顶部.)

也许有人知道为什么裁剪/缩放不起作用,或者可以给我另一种在应用中设置壁纸的方法(当然是针对 Cydia 而不是 App Store)?

推荐答案

使用这个示例项目,效果很好.

具有内部相机控制和自定义布局,在拍摄或从您的库中选择后裁剪图像,我用于我的项目并且非常易于自定义.

https://github.com/yuvirajsinh/YCameraView

//---------- 答案改进----------//

我查看了您的项目,发现了 2 个问题:

这里有 3 个语义问题警告:

- (id)initWithUIImage:(id)arg1 cropRect:(struct CGRect { struct CGPoint { float x_1_1_1; float x_1_1_2; } x1; struct CGSize { float x_2_1_1; float x_2_1_2; } x2; })arg2;

在此处输入图片描述

在您的 ViewController.m 中,您设置从哪里获取图像?

        - (id)initWithCoder:(NSCoder *)aDecoder
    {
        // black_i

//what directory is this?
        self = [self initWithUIImage:[UIImage imageWithContentsOfFile:@"/System/Library/WidgetResources/ibutton/white_i@2x.png"]];
//--------------------
        self.allowsEditing = YES;
        self.saveWallpaperData = YES;

        return self;
    }

我尝试删除你的

- (id)initWithUIImage:(id)arg1 cropRect:(struct CGRect { struct CGPoint { float x_1_1_1; float x_1_1_2; } x1; struct CGSize { float x_2_1_1; float x_2_1_2; } x2; })arg2;

将 IMG 目录更改为:

self = [self initWithUIImage:[UIImage imageNamed:@"myImage.png"]];

所有工作正常但无法裁剪图像,使用我的 git hub YCameraView 你首先了解它是如何工作的 CROPPING 功能如果你想使用裁剪或更简单,你必须创建一个全屏 UICameraPicker 允许用户从相机或库中获取并允许在 cameraPicker 中进行编辑,然后您可以像这样在视图中加载新图片

self = [self initWithUIImage:[UIImage imageNamed:imageSelected.image]];

对于关闭视图,您不能,因为是一个完整的应用程序允许用户设置背景墙纸,并且您不能终止应用程序以查看 SpringBoard,您必须创建第一个视图 > 选择器 > 详细视图,其中设置为一个 Home 和 LockScreen > 然后关闭并返回第一个视图.

PS:我认为在您的项目中,要在视图中直接编辑,您必须通过 UIView 上的捏合和平移手势来改进代码

希望对您有所帮助!

本文地址:https://www.itbaoku.cn/post/1793823.html