我正在实现基于捏合的缩放,并且从视图的左上角开始缩放,而不是从中心缩放。经过几次尝试(这似乎是一个cs起源问题等),没有找到一个好的解决方案,但必须有一些(可能是显而易见的)从视图中心扩展的方法。如果之前已经回答过,那么会很感激指向答案的指针(在广泛搜索后找不到)。如果没有,将欣赏正确方法的输入。
编辑以下答案(谢谢): 这是我最初使用的代码:
func pinchDetected(pinchGestureRecognizer:UIPinchGestureRecognizer){
let scale = pinchGestureRecognizer.scale
view.transform = CGAffineTransformScale(view.transform, scale, scale)
pinchGestureRecognizer.scale = 1.0
}
在捏合时,视图内部的内容将向右和向下扩展,而不是相同+向左和向上(因此假设它不是缩放"来自中心")。希望这更清楚。
答案 0 :(得分:0)
这是您要查找的代码
view.transform = CGAffineTransformScale(view.transform, 1.1, 1.1);
或在Swift中
view.transform = view.transform.scaledBy(x: 1.1, y: 1.1)
这将通过提供的比例增加视图高度和宽度。 现在,您可以使用手势识别器控制金额。
答案 1 :(得分:0)
您应该只需使用此question中的代码即可从中心进行缩放。如果您想要从手指放大,请查看该问题的答案。
答案 2 :(得分:0)
很难知道在没有看到你的代码的情况下发生了什么。默认情况下,转换会对视图中心起作用,这似乎就是您想要的。您可以通过更改视图图层上的anchorPoint属性来使变换作用于其他某个点。
或者您可以通过将原点转换为该点,进行转换以及再次转换来创建关于任意点的转换。例如:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.row == 1
{
let cell = Bundle.main.loadNibNamed("KonuDetayKonuTableViewCell", owner: self, options: nil)?.first as! KonuDetayKonuTableViewCell
cell.lblBaslik.text = arrayYorumData[indexPath.row].baslik
cell.lblKullaniciAdiVeTarih.text = arrayYorumData[indexPath.row].uye + " - " + arrayYorumData[indexPath.row].tarih
cell.lblYazi.text = arrayYorumData[indexPath.row].yazi
cell.updateConstraintsIfNeeded()
if singleton.username != arrayYorumData[indexPath.row].uye{
cell.btnDüzenle.isHidden = true
}
return cell
}
}
其中该点相对于原点,默认为原点。