拖曳手勢幾何拼貼 App之小蘑菇和車車拼貼
Published in
Jan 19, 2021
(一)成果展示
(二)github
(三)蘑菇和車
進階
- 拖曳形狀
使用DragGesture移動圖片
.gesture(DragGesture().onChanged({(value) inoffs[item].offset = CGSize(width: value.translation.width + offs[item].newPosition.width, height: value.translation.height + offs[item].newPosition.height)}).onEnded({(value) inoffs[item].newPosition = offs[item].offset}))
2.旋轉
使用RotationGesture旋轉圖片
.gesture(RotationGesture().onChanged{angle inoffs[item].degrees = angle.degrees})
3.縮放
使用MagnifcationGesture縮放圖片
.gesture(MagnificationGesture().onChanged{value inoffs[item].scale = value.magnitude})
4.額外功能
利用struct所形成的array,並由struct的offset和newPosition來儲存圖片所位移的舊數據和新數據
ForEach(0..<rec.count, id: \.self){ (item) inRectangle().frame(width: 100, height: 100).rotationEffect(Angle.degrees(degrees)).foregroundColor(color).scaleEffect(rec[item].scale).offset(rec[item].offset).rotationEffect(Angle.degrees(rec[item].degrees)).gesture(DragGesture().onChanged({(value) inrec[item].offset = CGSize(width: value.translation.width + rec[item].newPosition.width, height: value.translation.height + rec[item].newPosition.height)}).onEnded({(value) inrec[item].newPosition = rec[item].offset})).gesture(MagnificationGesture().onChanged{value inrec[item].scale = value.magnitude}).gesture(RotationGesture().onChanged{angle inrec[item].degrees = angle.degrees})}
這次的加分題真的花很久的時間才寫出來,尤其是最後在試手勢的時候電腦版真的超難用的,不過最後有下定決心一定要把這項作業做出來,所以還是有完成!!!