Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS,setTransform是否被setFrame覆盖?在重新运行setFrame后,变换不会重新绘制_Ios_Uiview_Screen Orientation_Cgaffinetransform - Fatal编程技术网

iOS,setTransform是否被setFrame覆盖?在重新运行setFrame后,变换不会重新绘制

iOS,setTransform是否被setFrame覆盖?在重新运行setFrame后,变换不会重新绘制,ios,uiview,screen-orientation,cgaffinetransform,Ios,Uiview,Screen Orientation,Cgaffinetransform,使用setFrame重新绘制帧后,我的变换不会绘制。 当方向使用setFrame更改时,我正在缩放视图。但是这个视图也需要根据BOOL参数改变位置:在视图中on=向上,在屏幕外off=向下。我使用setTransform调整视图的位置 首先,我通过执行setFrame绘制视图。这将在屏幕底部绘制100个点的视图。然后我设置了一个变换(-ty上的100),将其带到视图点中(只要BOOL设置为TRUE,否则变换为0,视图处于屏幕外) 正如预期的那样,这可以正常工作,但是当更改方向并且重新运行此代码(

使用setFrame重新绘制帧后,我的变换不会绘制。

当方向使用setFrame更改时,我正在缩放视图。但是这个视图也需要根据
BOOL
参数改变位置:在视图中on=向上,在屏幕外off=向下。我使用
setTransform
调整视图的位置

首先,我通过执行
setFrame
绘制视图。这将在屏幕底部绘制100个点的视图。然后我设置了一个变换(-ty上的100),将其带到视图点中(只要
BOOL
设置为
TRUE
,否则变换为0,视图处于屏幕外)

正如预期的那样,这可以正常工作,但是当更改方向并且重新运行此代码(以重新调整视图大小)时,转换不会绘制,即使它被记录为视图的转换。换句话说,视图只是在屏幕外,就好像transform.ty是0

Log message before re-draw: view.transform.ty -10.000000
Log message after re-draw: view.transform.ty -10.000000

有什么帮助吗?

视图的
框架是一个从三个基本值派生出来的值:
边界
中心
,和
变换
frame
的setter试图通过反转过程来做正确的事情,但当设置了非身份
转换时,它不能始终正常工作

在这一点上,问题非常清楚:

如果transform属性不是标识转换,则 此属性未定义,因此应忽略

如果transform属性包含非标识转换,则值 框架属性的属性未定义,不应修改。因为 在这种情况下,可以使用“中心”特性重新定位视图并进行调整 改为使用bounds属性的大小

由于您的
转换
只转换视图,因此我看不出有任何理由使用它。只需更改视图框架的原点:

[view setFrame:CGRectMake(0, self.view.bounds.size.height - 100, self.view.bounds.size.width, 100)];
[view setFrame:CGRectMake(0, self.view.bounds.size.height - 100, self.view.bounds.size.width, 100)];