gpt4 book ai didi

ios - 使用 PhotoLibrary 私有(private)框架设置 iOS 墙纸时裁剪/缩放不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:22:15 26 4
gpt4 key购买 nike

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

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

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

代码非常基础,涉及一个 ViewController 继承自 PLStaticWallpaperImageViewController 并实现类似于以下的 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;

enter image description here

在您的 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 你首先了解它是如何工作的裁剪功能如果你想使用裁剪或更简单,你必须创建一个全屏 UICameraPicker 允许用户从相机或库中获取并允许在 cameraPicker 中进行编辑,然后您可以像这样在 View 中加载新图片

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

对于关闭 View ,你不能因为是一个完整的应用程序允许用户设置背景墙纸并且你不能终止应用程序以查看跳板,你必须创建第一个 View >选择器>详细 View 并设置a Home 和 LockScreen > 然后关闭并返回到第一个 View 。

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

希望对你有帮助!

关于ios - 使用 PhotoLibrary 私有(private)框架设置 iOS 墙纸时裁剪/缩放不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24696884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com