2016-04-22 41 views
0

我有一個包含UIImageViewUILabel容器UIView,如下:將子視圖設置爲非「可變形」?

let containerView = UIView() 
containerView.clipToBounds = true 

let imageView = UIImageView(frame: containerView.bounds) 
imageView.image = UIImage(named: "Some Image") 
containerView.addSubview(imageView) 

let labelView = UILabel(frame: containerView.bounds) 
labelView.text = "Some Label" 
containerView.addSubview(label) 

我現在想舒展containerView的x軸,但保持標籤轉化的,即只是舒展containerViewimageView。我現在有:

containerView.transform = CGAffineTransformMakeScale(2, 1) 

但這也延伸了label。任何使標籤「不可變形」的解決方案?

回答

1

您可以將標籤移動到容器外部。或者,這是稍微哈克,你可以嘗試給標籤的容器變形的

label.transform = CGAffineTransformInvert(containerView.transform) 
+0

感謝您的建議。黑客的作品,但不是當我把它包含在動畫中時 - 這是一種奇怪的放大/縮小舞蹈。如何從容器中取出標籤並將其添加回來以查看該位置?我已經嘗試了'labelView.removeFromSuperview()',然後是'view.addSubview(labelView)',它添加了視圖,但轉換仍然適用於它... – Alex

+1

你需要找到容器的容器,在那裏添加視圖('container.superview.addSubview(labelView)')。如果你使用自動佈局,你需要更新你的約束來處理它不是其他包含的元素的兄弟(這可能是棘手的)。如果你手動計算佈局,你可以調整,直到你做對了。 –

1

是的,如果將變換應用於containerView,則其所有子視圖也將被轉換(labelViewimageView)。

請將標籤添加到容器視圖之外,這樣它就不會變形。