Swift 3
//
// ViewController.swift
// test
//
// Created by David Seek on 9/29/16.
// Copyright © 2016 David Seek. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let button = MyButton(frame: CGRect(x: 200, y: 200, width: 100, height: 100))
button.backgroundColor = UIColor.white
button.addedTouchArea = 50 // any value you want
button.addTarget(self, action:#selector(self.action), for: .touchUpInside)
self.view.addSubview(button)
}
func action() {
print("touched")
}
}
class MyButton: UIButton {
var addedTouchArea = CGFloat(0)
override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
let newBound = CGRect(
x: self.bounds.origin.x - addedTouchArea,
y: self.bounds.origin.y - addedTouchArea,
width: self.bounds.width + 2 * addedTouchArea,
height: self.bounds.width + 2 * addedTouchArea
)
return newBound.contains(point)
}
}
Sie sind ein UIButton
in der Größe von 100x100 zu schaffen und mit .addedTouchArea
, haben Sie eine UIButton - noch optische Größe 100x100, aber mit einem Touch-Bereich von 150x150 .
Swift 2.X
class MyButton: UIButton {
var addedTouchArea = CGFloat(0)
override func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool {
let newBound = CGRect(
x: self.bounds.origin.x - addedTouchArea,
y: self.bounds.origin.y - addedTouchArea,
width: self.bounds.width + 2 * addedTouchArea,
height: self.bounds.width + 2 * addedTouchArea
)
return newBound.contains(point)
}
}
Interface
Wenn Sie den Button mit dem InterfaceBuilder
gesetzt haben, unsere Unterklasse von UIButton
auf Ihre Schaltfläche anzuwenden.
gesetzt dann einen Zugang zum Knopf, F.E. benannte SchaltflächeXY. Und setzen buttonXY.addedTouchArea = 50
innerhalb viewDidLoad
, f.E.
UITableViewCell
Da Sie für UITableViewCell
sind gefragt. Es funktioniert genau so.
In Ihrem Viewcontroller Klasse:
extension ViewController: UITableViewDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "tableViewCell") as! TableViewCell
cell.selectionStyle = UITableViewCellSelectionStyle.none
cell.myButton.addedTouchArea = 50 // any value you want
tableView.rowHeight = 200
return cell
}
}
In Ihr Handy Klasse:
Das einzige, was Sie passen sollte: Der Ausgang als UIButton
Auslass eingestellt wurde, sogar tho ich erklärt hatte, es als Unterklasse von MyButton innerhalb der InterfaceBuilder
. Ich musste die Steckdose manuell auf MyButton
umstellen!@IBOutlet weak var myButton: MyButton!
erhöhen Sie die Breite/Höhe der Schaltfläche, wenn es kein Problem gibt. Was sind die anderen Teilansichten der Zelle? –