2014-07-11 10 views
2

我已經管理(在此post的幫助下)從PhotoLibrary私有框架中打開PLStaticWallpaperImageViewController,該框架允許直接設置壁紙和鎖定屏幕(使用與照片應用程序相同的用戶界面)。不幸的是,圖像裁剪/縮放功能似乎不起作用,因爲圖像視圖本身似乎沒有接觸到(在取消/設置按鈕被觸摸後主視圖也沒有被正確解除,但是這並不那麼重要)。使用PhotoLibrary私有框架設置iOS牆紙時裁剪/縮放不起作用

我有一個Xcode項目演示壁紙設定(可以在模擬器中運行,以及作爲非破解的裝置):

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

的代碼是很基本的,並且涉及一個ViewController繼承PLStaticWallpaperImageViewController和實施類似以下內容的init方法:

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

(這將是必要的,以允許第一發射後進入圖片庫,以及對於s因爲這個彈出窗口出現在應用程序後面,而不是在頂部。)

也許有人有洞察力,爲什麼裁剪/縮放不工作,或者可以給我一種替代方法來設置壁紙一個應用程序(當然是指Cydia而不是App Store)?

回答

1

使用此示例項目,工作得很好。

內置照相機控制和自定義佈局,拍攝時的裁剪圖像或從庫中選擇後,我用於我的項目和非常簡單的自定義。

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/[email protected]"]]; 
//-------------------- 
     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樞紐YCameraView你有首先了解它是如何工作的如果你想使用裁剪或更簡單的方法,如何使用裁剪功能,你必須創建一個全屏允許用戶從相機或庫中獲取並允許在cameraPicker中進行編輯那麼您可以在您查看加載一個新的畫面這樣

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

的解僱視圖,你不能因爲是一個完整的應用程序允許用戶設置背景壁紙,你不能終止應用程序看SpringBoard,你必須使用Home和LockScreen的設置創建第一個視圖> picker> detail視圖>然後解散並返回第一個視圖。

PS:我覺得在你的項目,以使編輯在你有對的UIView捏和平移手勢

希望這有助於你提高你的代碼視圖直接!

+0

謝謝,在圖書館我仍然無法裁剪,雖然縮放工作。但我不明白這是如何直接幫助我解決問題的。你有沒有嘗試過我的示例項目? – newenglander

+0

@newenglander我改進了我的答案,以幫助您解決問題 – BlackSheep

+0

謝謝。我已經更新了該項目以解決您的一些觀點。但是,由於我使用的是Apple應用程序本身使用的私人框架,我不想自己進行縮放和裁剪,應該由我正在使用的類('PLStaticWallpaperImageViewController')完成。 – newenglander