1
iOS Swiftのビューのエッジまたは境界のタッチを検出する方法。ユーザーがUIViewの境界線をドラッグしたときにUIViewの幅と高さを増やしたい。UIVIEWのエッジでタッチを検出する
iOS Swiftのビューのエッジまたは境界のタッチを検出する方法。ユーザーがUIViewの境界線をドラッグしたときにUIViewの幅と高さを増やしたい。UIVIEWのエッジでタッチを検出する
溶液を得た。How to resize UIView by dragging from its edges?溶液。
スウィフトのバージョンとあなたは以下のSOスレッドを見てみたいことがありますエッジだけでなく、コーナー
class OverlayView: UIView {
/*
// Only override draw() if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override func draw(_ rect: CGRect) {
// Drawing code
}
*/
static var kResizeThumbSize:CGFloat = 44.0
private typealias `Self` = OverlayView
var imageView = UIImageView()
var isResizingLeftEdge:Bool = false
var isResizingRightEdge:Bool = false
var isResizingTopEdge:Bool = false
var isResizingBottomEdge:Bool = false
var isResizingBottomRightCorner:Bool = false
var isResizingLeftCorner:Bool = false
var isResizingRightCorner:Bool = false
var isResizingBottomLeftCorner:Bool = false
//Define your initialisers here
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
if let touch = touches.first {
let currentPoint = touch.location(in: self)
isResizingBottomRightCorner = (self.bounds.size.width - currentPoint.x < Self.kResizeThumbSize && self.bounds.size.height - currentPoint.y < Self.kResizeThumbSize);
isResizingLeftCorner = (currentPoint.x < Self.kResizeThumbSize && currentPoint.y < Self.kResizeThumbSize);
isResizingRightCorner = (self.bounds.size.width-currentPoint.x < Self.kResizeThumbSize && currentPoint.y < Self.kResizeThumbSize);
isResizingBottomLeftCorner = (currentPoint.x < Self.kResizeThumbSize && self.bounds.size.height - currentPoint.y < Self.kResizeThumbSize);
isResizingLeftEdge = (currentPoint.x < Self.kResizeThumbSize)
isResizingTopEdge = (currentPoint.y < Self.kResizeThumbSize)
isResizingRightEdge = (self.bounds.size.width - currentPoint.x < Self.kResizeThumbSize)
isResizingBottomEdge = (self.bounds.size.height - currentPoint.y < Self.kResizeThumbSize)
// do something with your currentPoint
}
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
if let touch = touches.first {
let currentPoint = touch.location(in: self)
// do something with your currentPoint
}
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
if let touch = touches.first {
let currentPoint = touch.location(in: self)
// do something with your currentPoint
isResizingLeftEdge = false
isResizingRightEdge = false
isResizingTopEdge = false
isResizingBottomEdge = false
isResizingBottomRightCorner = false
isResizingLeftCorner = false
isResizingRightCorner = false
isResizingBottomLeftCorner = false
}
}
を検出するためのコード - http://stackoverflow.com/questions/8460119/how-to-あなたが質問をする前に、いくつかの検索をすることをお勧めします:) – Fahim
[両端からドラッグしてUIViewのサイズを変更する方法は?](http://stackoverflow.com) /質問/ 8460119/how-to-resize-uiview-by-the-edges) – Fahim
@ Fahim、OPがタッチの検出方法を尋ねているので、実際には重複していないと推測していますUIViewのエッジ*、この質問は、 "ハンドル"を持つUIViewを解決します。つまり、(1)この質問を見て、(2)ピンチジェスチャーを使って、他のすべてのCocoaTouchアプリがそれをどのように実行するのかを検討してください。タッチを検出することはあまりユーザーフレンドリーではありません...アップルはボタンのサイズを最小限40x40にすることを提案しています。あなたは本当にマウスポインタがもたらすのと同じ正確さを期待できますか?ハンドルまたはピンチジェスチャーを使用する必要があります。 – dfd