簡體   English   中英

以2D而非3D旋轉UIView

[英]Rotate a UIView in 2D, not 3D

當我使用以下任一代碼時,按鈕以3D而不是2D旋轉(與屏幕平齊)。 如何避免3D行為? 這是旋轉過程中按鈕的外觀:

在此處輸入圖片說明

CGAffineTransform rotationTransform = CGAffineTransformIdentity;
    rotationTransform = CGAffineTransformRotate(rotationTransform, (offset/(180.0 * M_PI)));
    button.transform = rotationTransform;

    button.transform = CGAffineTransformRotate(CGAffineTransformIdentity, (offset/(180.0 * M_PI)));

button.transform = CGAffineTransformMakeRotation(offset/(180.0 * M_PI));

這是蘋果公司員工的答案:

設置變換時,框架的定義不太明確,以至於您不再應使用它來調整視圖的大小或位置。 嘗試使用center屬性,您可能沒有獲得3D旋轉,但是由於設置幀和trnsform的復合效果而導致了扭曲。

我遇到了同樣令人煩惱的問題,盡管還是不知道為什么,但終於解決了。

當我嘗試在“ viewDidLayoutSubviews”方法中執行2D旋轉時,出現了意外的3D旋轉

double radius = (degree / 180.0) * M_PI;
uiImageView.transform = CGAffineTransformMakeRotation(radius);

我的解決方案是在“ viewDidLayoutSubviews”之外的其他地方執行轉換,並且運行良好。

有趣的是,當惱人的3D旋轉發生時,並且我一直調整我的iPhone的方向時,3D旋轉會突然消失,而2D旋轉會重新出現並取而代之,但是圖像保持扭曲的形狀。 我想也許iOS正在“ viewDidLayoutSubviews”中進行一些內部轉換,如果我們對其施加其他轉換,事情就會變得混亂。 但是,我的猜測無法解釋為什么它會在一段時間后消失。 我也嘗試過NSLog“ uiImageView.transform”的成員,例如“ viewDidLayoutSubviews”中的“ a,b,c,d,tx,ty”,但沒有任何線索。

解決方案:檢查您的代碼以查看是否正在“ viewDidLayoutSubviews”或類似方法中執行旋轉,如果是,請嘗試將其移至其他位置並用手指交叉。

暫無
暫無

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

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