我有一个名为UIView的container,我想用仿射转换来移动(偏移)。此视图包含UIImageView,是UICollectionViewCell的子视图。
所以应该很简单
container.transform = CGAffineTransformMakeTranslation(100, 200) //render container 100 points right and 200 points down相反,这是非常困难的,因为it代码什么也不做。视图呈现在相同的位置,就好像我删除了该行一样。因此,我添加了“print”来验证设置了哪些仿射翻译:
container.transform = CGAffineTransformMakeTranslation(100, 200)
print(container.transform) //prints: CGAffineTransform(a: 1.0, b: 0.0, c: 0.0, d: 1.0, tx: 100.0, ty: 200.0)这似乎没问题。因此,我尝试用container视图代替CGAffineTransformMakeRotation旋转视图,它只是旋转视图,而不是按照文档的要求围绕视图的中心旋转。我尝试了平移、旋转和尺度变换的不同组合,只是为了发现仿射变换矩阵集是可以的,但是属性tx和ty似乎被忽略了,a, b, c和d似乎使用了不同的锚点,然后视图的中心(不能说出那个点是什么)。
有什么可以导致这一问题的想法,以及如何解决它?
发布于 2015-12-04 20:08:56
一定有什么东西像汽车布局给你搞砸了。在不受外界影响的情况下,将视图的仿射变换设置为CGAffineTransformMakeTranslation( 100,200)将使视图右移100点,向下移动200点。通过在Xcode中创建一个新的单一视图项目并将ViewController.swift类中的ViewController.swift方法更改为:
override func viewDidLoad()
{
super.viewDidLoad()
view.backgroundColor = UIColor.blueColor();
let container = UIView(frame: CGRectMake(0,0,100,100));
container.backgroundColor = UIColor.greenColor();
container.transform = CGAffineTransformMakeTranslation(100, 200);
view.addSubview(container);
}正如预期的那样,这使得绿色容器视图在右边显示了100个点,向下显示了200个点,尽管它的帧是(0,100,100)。
因此,请检查自动布局和其他可能影响此视图放置的东西,如果您找不到任何东西,请张贴更多代码。另外,如果您的容器视图没有背景色,请给它一个,以便您可以直接看到它的位置,而不是推断它的位置通过查看图像视图。
n.b.设置视图的转换实际上并不会移动视图本身,它只会改变它绘制内容的方式/位置。
https://stackoverflow.com/questions/34095443
复制相似问题