我的數學比例很爛,所以我需要在這一個一些幫助,因爲它是我花2小時,遠不及我有沒有在那裏。計算一半
我啓用了滑動面板(很像「刷卡透露」你上表細胞功能)的觸摸。這是一個醜陋的ascii圖
-----------------------------
| Slide | Reveal |
-----------------------------
您滑動左側的「幻燈片」位,以顯示揭示位。我現在想要做的是制定出來,當觸摸結束時顯示多少顯示,並且打開或關閉。
我知道,揭示框的寬度是110,我還可以工作了,如果幻燈片已經向左移動由-75,那麼「開放百分比」爲75%
Open Percentage = left/width
我希望動畫時間從中心0.5秒。所以如果你在50%時需要0.5秒的時間來打開,而49%需要0.5秒來快速關閉(或者在那裏,我知道49%會在0.5秒之內觸摸)
同樣,如果滑塊是隻有20%打開它應該需要0.1秒來關閉,而80%打開是0.1秒來打開。
我相信我需要向左側偏移,相對摸出半寬度,計算百分比,然後應用這一比例到最大0.5動畫時間......但是,這是我卡住。
更新:這是我設法得到了一些試錯後的工作,但感覺冗長和雜亂。絕對是一種更簡單的方法!
// Config
let maxAnimationTime = 0.5
// Get left offset
let absLeftOffset = abs(cell.leftContstraint.layoutConstraints[0].constant)
// Get width of action box
let actionBoxWidth = cell.revealView.frame.width
let halfActionBoxWidth = actionBoxWidth/2
// Are we opening or closing?
let snapOpen = absLeftOffset > halfActionBoxWidth
// Calculate the left position relative the half width
let xPos = snapOpen ? absLeftOffset - halfActionBoxWidth : absLeftOffset
// Calculate the percentage of the left percentage relative to the half width
let perc = snapOpen ? abs(xPos - halfActionBoxWidth)/halfActionBoxWidth : xPos/halfActionBoxWidth
// Use the percentage to calculate the animation time to apply
let animationTime = (Double(perc) * maxAnimationTime).round(to: 2)
如果你知道個你能不能只使用該值的動畫時間?如果其小於或等於50%,則只使用動畫時間的百分比值,如果大於50則使用'100 - percentValue'作爲動畫時間。 – Hodson