Swift 隨slider變化而變化的圓

2022-09-11 18:00:15 字數 789 閱讀 2531

先來看看效果

基本思路是取slider的值,用animate改變圓的frame(當然其他方法也可以,然而我就喜歡這麼幹)

從slider取到的值是value,設為縮放倍數。要實現的效果就是長寬同時縮放value倍(這個圓其實是圓角矩形,圓角設為長度一半)。

這裡我用的是uiview.animatewithduration這個函式,但是如果只在裡面設定frame的長寬變化就會發生這樣的事

然而右圖才是我們要的效果。

為什麼呢?!因為frame的cgrectmake的x和y不變!所以x和y也要做相應改變。因為這個東西是圓,所以以圓點為中心縮放的時候,長寬的增量是相等的。要保持圓點不變的話,左右和上下增量也應該是一樣的。所以左邊的增量就要靠改變x實現,上面的增量要靠改變y實現!

原長寬設為width和height的話,改變後的長寬就是value*width和value*height,增量就是width*(value-1)和height*(value-1),(x,y)的變化後就應該是(x-(width*(value-1)),y-(height*(value-1))),就是這樣~

我這裡設定slider的value範圍是1~5。貼**:

@ibaction func slider(sender: uislider) 

}

如何讓控制項隨窗體的大小變化而變化

根據 窗體的新的大小調整控制項 的 大小 新的x 新的y 控制項 private void setcontrols float newx,float newy,control cons 獲取控制項的tag屬性值,並分割後儲存字串陣列 float a convert.tosingle mytag 0 ...

VB控制項隨窗體大小而變化 Resize Form

vb控制項隨窗體大小而變化 當窗體大小改變時,如何動態的改變控制項的大小是許多vb程式設計師頭痛的 事。有的人設定窗體resizable但卻不改變控制項的大小 有的人則根據控制項的 絕對位置與視窗大小相加減的辦法來重新定位控制項與改變大小,這種辦法比 較繁瑣,且不可重用 當然也有人則限定視窗乾脆不讓...

對話方塊控制項大小隨視窗的大小變化而變化

我們經常會發現當我們將視窗最大化時,裡面的控制項並沒有進行改變,接下來我就介紹一下此問題的解決辦法,我們其實一般的都會把視窗的最大化按鈕失效,是視窗不能進行最大化操作,但是有時候我們還是需要對視窗進行最大化操作的,下面我們可以通過新增wm size訊息來解決此問題。1 在xxdlg.h中新增 afx...