拾映還沒有正式上線,很多細節還在打磨,App Store 上暫時找不到。 上架時通知我 看看拾映的細節 →

拾映的細節:整理、刪除與搜尋

簡單說

這一頁講拾映(PicWay,一款還沒有上架 App Store 的 iPhone 照片 App)在整理、刪除和搜尋上的一個個小決定:刪除之前會發生什麼,相似照片和重複照片怎麼處理,整理截圖怎麼避免誤觸,搜尋怎麼讀懂日期,以及每一處為什麼這樣做。

最後更新:

拾映還沒有上架 App Store,即將上架。整理、刪除和搜尋,是最怕出小差錯的幾個地方:不想丟的照片被刪了,點了沒反應,搜了找不到想找的。這一頁寫的是目前版本在這幾處各做了什麼,以及為什麼這樣做。

拾映刪除照片之前,會發生什麼?

刪除是最難反悔的動作,所以這幾張卡片講的是確認、說實話的提示,以及哪些東西還能找回來。

在「放一邊」點刪除就是刪除,iOS 仍會先問你

做法: 「放一邊」裡的每一張,都是你自己放進去的,所以在這裡點刪除,這一下就是授權:拾映不會再攔住你,去核對這些照片是不是屬於某個相似或重複的組。iOS 自己的刪除確認照常跳出來,刪掉的內容進入「最近刪除」,在那裡保留 30 天。

為什麼這樣做: 在你自己的選擇之上再加一道分組檢查,只會跳出一句你沒辦法處理的「還在核對」。真正保護你的檢查都還在:系統不讓拾映刪除的照片、因為權限受限而看不到的照片,仍然照原來的方式處理。

「最多可釋放」取較大的那個數,並說明實際可能不同

做法: 在「放一邊」點刪除時,確認框會寫出這一批最多可以釋放多少空間。這個數取兩種量法裡較大的那個:每一項的目前版本,或是包含編輯前原件的完整檔案。量不出來時,退回較小的那個數。確認框裡還寫明,實際數量以系統確認刪除的項目為準。

為什麼這樣做: 這個數只有一個用途:告訴你刪掉原件到底騰出多少空間。量不準的時候,寧可把收益說小,也不說大。

有些照片刪不掉時,原因分兩種,各說各的

做法: 一批照片裡如果有沒刪掉的,拾映會分兩種情況說明原因。一種是拾映目前看不到的照片(照片權限不是「全部照片」):這次跳過,提示你允許取用全部照片後再刪。另一種是系統不讓拾映刪除的照片,多半在共享相簿裡:它們留在這一頁,可以拿回來,或是到「照片」App 裡刪。

為什麼這樣做: 這兩種情況你要做的事不一樣,只寫一句籠統的「刪除失敗」,既說不清是哪一種,也不知道該怎麼辦。

整理結果存不下來時,拾映會告訴你

做法: 在相似照片或重複照片裡,如果你的決定沒能寫進拾映自己的紀錄,頁面會跳出「無法完成這次整理」,而不是把這一組顯示成已整理。

為什麼這樣做: 否則畫面上顯示已經整理好,重新啟動之後這個決定又悄悄退回去了。重複照片頁和它的下一層頁面,用的是同一個規矩。

撤回一次壓縮,會告訴你原片已保留

做法: 撤回一組壓縮之後,底部會跳出一句「已保留原始檔,壓縮版本已在『放一邊』」,同時讀給旁白(VoiceOver)聽,幾秒後自己消失。這句話沒有按鈕,所以不擋觸控,下面的頁面照常可以點。

為什麼這樣做: 撤銷剛做的事,應該直接說清楚什麼東西在哪裡。這句提示沿用格狀檢視裡的結果膠囊,不另外做一種新的彈窗。

拾映怎麼處理相似照片、重複照片和連拍?

分組只有在你能對整組下手、不用等也不用猶豫的時候才有用。

一次對很多組相似照片做決定

做法: 在相似照片裡,可以勾選好幾組,一次決定:每組留一張,或是全部放一邊。預設每一組有品質分時留分最高的那張,沒有分就留第一張;如果你標了別的一張,就照你標的。

為什麼這樣做: 批次決定是為了不打斷你的節奏。所有選中的組,會合成一個大批次,不管選了多少組,拾映的紀錄一共只寫兩次,而不是一組一組地寫,因為一組一組寫會讓畫面閃一下白。

打開一組完全重複的照片,當場就核對

做法: 點開一組完全重複的照片時,拾映不用等整個照片圖庫的分析輪到它,而是只對這一組把同樣的檢查再做一遍:每一張都符合已存的資格資料,全都落在同一個候選桶裡(尺寸、時長和媒體類型相同),而且這一組自己的比對證據對得上。這個過程不讀原照片,在記憶體裡完成。

為什麼這樣做: 等整個圖庫的分析會很慢:在一次真機測試裡,所有特徵都已經算好了,仍然等了兩分鐘以上,期間每一組都顯示「正在重新核對」。點進去卻看到一個沒完成的狀態,這是說不過去的。

連拍預設留系統挑的那張,截圖不算連拍

做法: 連拍組預設留下系統選作代表的那張。對於拾映自己按拍攝時間切出來的連拍(系統沒有挑代表),有品質分時預設留分最高的那一張(規矩和相似照片一樣),湊不齊分就留第一張。帶著連拍標記的截圖,不算在連拍裡。

為什麼這樣做: 連拍應該是相機拍出來的一連串照片,截圖不屬於它。

「生活」會收起哪些照片,為什麼?

「生活」是一種看照片圖庫的方式:去掉那些不是為了記住什麼而拍的照片。

「生活」依據系統標記和拾映已讀到的文字,拿不準就算生活照

做法: 「生活」會收起截圖、螢幕錄影和動圖,依據是系統已經存好的標記,不讀像素、也不數字數。長得像文件的照片(收據、證件、整頁文字)也會收起,依據是拾映已經在這張照片裡讀到的文字。收藏過的截圖,仍然不算生活照。拿不準的時候,一律算生活照,而且每一個判斷你都可以自己改。

為什麼這樣做: 寧可讓一張多餘的截圖露著,也不要把一張真正的照片錯誤地藏起來。所以像「沒有拍攝資訊就是存來的圖」這樣的猜測,不用。

資訊頁告訴你一張照片為什麼不在「生活」裡,並能一鍵改回來

做法: 查看一張不在「生活」裡的照片時,資訊頁會說明原因:它是截圖、螢幕錄影、動圖,圖裡的字看起來像票據、證件或文件,或是你自己標過的。旁邊有一個按鈕可以把它放回去。本來就在「生活」裡的照片,不會出現這一行。

為什麼這樣做: 這一行只回答一個問題:「它為什麼從『生活』裡不見了?」所以只說它像什麼,不顯示內部狀態,也不顯示認出來的字。

整理截圖怎麼做到順手、不誤觸?

清理截圖是一連串很小的手勢,每一個都要讓人心裡有數。

第一次進來,親手做一遍就會了

做法: 第一次打開整理截圖時,拾映用你自己的截圖帶你走一遍:滑到下一張、點兩下收藏、真的放一邊一張,最後一步只練習點一下,什麼也不改。每一步都會把真實的控制項標亮,做對了才進下一步。如果截圖太少,走不完這幾步,就改成一張簡短的說明卡。兩種情況走完,都算「看過」。

為什麼這樣做: 動手比看說明學得快,而且練習用的是你自己的截圖,學到的就是之後要用的。

點兩下收藏;點一下要多等約 0.45 秒

做法: 在截圖上快速點兩下就是收藏,再點兩下取消。為了分清點一下和點兩下,拾映在第一下之後會等約 0.45 秒:這段時間裡第二下落在附近就是點兩下,否則才執行點一下。代價是點一下會晚約 0.45 秒才有反應。

為什麼這樣做: 系統的點兩下判定窗放不寬,間隔稍慢的點兩下會先被當成一次點一下。這套規矩和影片漫遊、回顧裡放大看影片、時光和旅程裡的影片共用同一份。

在照片上向上滑就是放一邊,右上角的圈告訴你會發生什麼

做法: 在截圖頁面上向上滑(備註那一行以外都可以起手),就把這張截圖放一邊。從備註那一行起手的不算,橫著滑或斜著滑也不會觸發。右上角有一個圈,手指往上走它就跟著畫滿,圈滿時放手,這張就放一邊。

為什麼這樣做: 橫向翻頁不應該被誤認成刪除。圈和結果出自同一套規矩,所以圈滿時放手就會放一邊,沒滿就不會。

放一邊總有反應,離開之前不會真刪

做法: 把截圖放一邊,不管用按鈕還是向上滑,總會有下文:如果畫面還沒翻到目前這一張,這個動作先排隊;排隊超過 0.6 秒還沒上畫面,拾映就把畫面往前推一拍。截圖要等你離開、並經過系統的確認之後,才會真的被刪掉。

為什麼這樣做: 一個有時沒反應的按鈕,比短暫的延遲更糟,所以規矩是:每一下點按都有下一步。

看過多少張,在離開時一次記,不是每滑一張就記

做法: 你看過多少張截圖,以及其他地方顯示的統計,是在離開整理截圖時一次記下的,不是每滑一張就記一次。

為什麼這樣做: 這些統計是整個 App 都在看的資料,每滑一張就更新一次,整個畫面就要重算一次。翻頁於是會卡在半路。

有截圖沒刪成時會提示一句,全部刪成功就不跳

做法: 離開整理截圖之後,如果有照片被系統拒絕刪除或出了錯,首頁或相簿頁底部會跳出一句「有 N 項沒刪掉,仍在照片圖庫裡」,約 3.5 秒後自己消失,不用點。全部刪成功時,不跳。

為什麼這樣做: 這句提示要做到不打斷你。它掛在 App 的根上,不在整理截圖裡面,因為掛在裡面的提示,會隨著你剛離開的那一頁一起消失。

搜尋是在趕時間的時候打字,所以對寫法、說法和時間都要寬容。

最近搜尋:最近 10 筆,同一句只留一筆

做法: 搜尋頁會記住你最近的 10 次搜尋,最新的在前。同一句話只留一筆,不管大小寫、全形半形、變音符號或首尾的空白,都會挪到最前面。每一筆可以用它的 × 單獨刪掉,也可以點「清除」全部清掉。

為什麼這樣做: 10 筆是一排膠囊放得下、又夠回頭找的數量,再多的會丟掉最舊的。

照人說話的方式搜日期:上周六、上个月底

做法: 在搜尋框裡可以直接輸入「昨天」「上周六」「上周末」「上个月底」「今年初」這類說法(目前這幾個詞按簡體字的寫法認),搜尋會把它們認成日期範圍。月初是 1 日到 10 日,月底和月末是 21 日到月底,年初是 1 月,年底和年末是 12 月。用文字寫的日期也能認,比如「五月一日」「去年五月一日」;英文、繁體中文、日文、韓文、德文、法文和西班牙文裡用文字寫的日期,也一樣能認。

為什麼這樣做: 不能因為一個字長得像就硬當成日期。「日」「三」這樣的星期字,只有後面跟得上才算星期;比如「上周日本」不會被讀成「上周日」加一個「本」,而是退回到「上周」整週,後半截留作一般的搜尋詞。文字寫的日期,也只改寫完整的「月加日」。

晚到的搜尋結果也會補進來

做法: 搜尋結果是分批到的。後到的一批會補進清單,而不會因為系統的版本標記有一點變化就被拒收,頁面也就不會停在一個不完整的結果上。

為什麼這樣做: 這個標記一兩秒就會動一次,所以只要它變了就拒收的話,晚到的結果就總是失敗。現在只允許這個標記變化;撤銷了權限、換了搜尋詞、圖庫有變化,晚到的結果仍然會被拒收。

點取消,搜尋頁立刻收起

做法: 在搜尋頁點取消,頁面馬上撤掉,不用等鍵盤收完;鍵盤照它自己的節奏滑走。從螢幕左邊緣向右滑返回,仍然保留跟手的轉場。

為什麼這樣做: 以前要等鍵盤收完才換頁,點了取消之後畫面會不動 230 毫秒,感覺取消很慢。鍵盤蓋在已經換好的頁面下面滑走,是 iOS 在別處一直這樣做的。

為什麼首頁不讓人等?

首頁是你進門的地方,所以在這裡點一下,要直接落在照片上。

從首頁進回顧,先把第一張備好再打開

做法: 從首頁點開一個回顧入口(地點、更多整理方式、往年今日等)時,拾映先定下回顧會從哪一張開始,最多等 0.35 秒把它的像素備好,然後再打開。備得晚了,回顧也照樣打開。

為什麼這樣做: 以前是直接打開,第一張還不在快取裡,先出現一個只有 × 的等待頁,之後照片才出來,你會先看到一下空白。

點首頁某一排的照片,同一拍就原位放大,而且不會變糊

做法: 點首頁三排裡的某張卡片,同一拍就從這張卡片原位放大。畫面只會在出現更清楚的版本時才替換,不會換成更糊的。

為什麼這樣做: 以前放大要先等第一張和它的像素,點下去之後要頓約 0.55 秒。現在飛過去的,就是已經在畫面上的那一張。

「下一件小事」的高度跟著字級走

做法: 首頁的「下一件小事」可以左右翻幾張精簡的列卡。整條的高度跟著最高的那一張走,所以字級變大時,卡片會跟著長,不會把字截斷,也不會留出一大片空白。

為什麼這樣做: 一張卡片就是封面、兩行字和一個箭頭,高度本來就該跟著字級走;套一張按字級分檔的固定高度表,就把這份自適應作廢了。所有卡片一次量完,而不是用到才量,所以翻到更高的一張時,下面的頁面不會跳。

沒有網路、手機很忙的時候,拾映怎麼辦?

這幾張卡片講的是沒有網路、或是手機負擔很重的時候。

離線時,播不了的影片在排隊開始之前就被擋在外面

做法: 拾映知道手機什麼時候離線,所以瀏覽影片時,播不了的片段會在建立佇列之前就被擋掉,而不是讓每一格還在 iCloud 裡的影片都去乾等。這裡的「在線」,指連線真的走在 Wi-Fi、行動網路或有線上。

為什麼這樣做: 在飛航模式下,這樣的影片以前每個要乾等約 20 秒,再按 1 秒、2 秒、4 秒退避重試,最壞要 80 秒才判定播不了,你看到的就是一串轉很久的圈。VPN 隧道在飛航模式打開之後還可能回報「已連線」,所以以真正的實體連線為準。啟動時先假定在線,等第一次網路讀數到了再修正,這樣在線的使用者不容易少一輪內容。

全螢幕頁面蓋住首頁時,停掉首頁漸層用的動態感測器

做法: 首頁頂部的光影漸層會跟著你拿手機的角度變化。全螢幕頁面蓋住首頁時(回顧、旅程、更多整理方式的完整清單、地圖),拾映會停掉驅動它的動態取樣。半透明、漸層仍然看得見的遮罩,不算在內。

為什麼這樣做: 不停的話,每一次感測器讀數都還會送到主執行緒,去驅動一個你一個像素都看不見的漸層。停掉它,就少做這份白費的功夫。

想多看一點

拾映還沒有上架 App Store。在下面留下電子郵件,上架時我們會通知你。

拾映還沒上架,想在上架時收到郵件嗎?

拾映上架和有新功能時,我們給你發郵件提醒。不發垃圾郵件、不發廣告,隨時可以退訂。我們怎麼處理