簡體   English   中英

設備旋轉后修改CGAffineTransformScale

[英]CGAffineTransformScale modified after device rotation

我認為我正在進行轉換

originalTransform = self.appContainer.transform;
self.appContainer.transform = CGAffineTransformMakeScale(.8, .8);

原始輪換

如果我不旋轉設備,我可以通過使用將其恢復為原始設備

self.appContainer.transform = CGAffineTransformScale(originalTransform, 1, 1);

不幸的是,如果我旋轉設備,視圖的轉換矩陣會被視圖旋轉修改並打破原始比例。 如果我在旋轉后撤消刻度,我留下UIView沒有返回其原始的完整大小。

旋轉后

原始規模之后

我確信我需要在原始轉換矩陣和新轉換矩陣之間進行計算,但我不確定如何做到這一點。 我能做的唯一一件事就是在旋轉之前將比例恢復為1

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    self.appContainer.transform = CGAffineTransformScale(originalTransform, 1, 1);
}

然后用新修改的轉換重新縮放它

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation               {
    self.appContainer.transform = CGAffineTransformMakeScale(.8, .8);
}

這使它按照我的預期工作,但不是回到全屏,然后回到.8比例,我希望它從它的新轉換到正確的.8比例。

如果要將其還原為原始值,請嘗試將轉換設置為CGAffineTransformIdentity。

self.appContainer.transform = CGAffineTransformIdentity;

我認為你必須刪除所有使用.....的自動修復面具

[self.appContainer setAutoresizingMask:UIViewAutoresizingNone];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM