2015-10-13 78 views
1

我目前正在开发iPhone应用程序,需要重新定位UIImageView。这是迄今为止我所做的迄今:UIImageView无法以编程方式更改位置

import UIKit 
import CoreGraphics 
import AVFoundation 
import QuartzCore 

class _DBubbleViewController: UIViewController { 
    @IBOutlet weak var BubbleBackground: UIImageView! 
    @IBOutlet weak var Bubble: UIImageView! 


override func viewWillAppear(animated: Bool) { 
Bubble.frame = CGRect(x: 168, y: 220, width: Bubble.bounds.size.width,  height: Bubble.bounds.size.height) 

我已经检查@IBAction连接正确,但是当我运行该程序,UIImageView位置不会改变。谁能帮忙?

+1

您是否在使用autolayout? – tagy22

+0

你用故事板吗?该项目是自动布局? – engmahsa

+1

如果使用自动布局,则需要使用约束来定位UIImage。或者,您可以将“translatesAutoresizingMaskIntoConstraints”设置为“NO”,以用于包含UIImage的视图。否则,当为您添加UIImageView时会生成约束,从而在布局发生时强制图像回到该点,这就是你看到了。我建议你使用UIImageView的约束。 –

回答

5

在Storyboard中,单击您的UIImageView并添加顶边的约束和顶边的约束。

CTRL从视图层次结构中的每个约束拖拽到swift文件中,并为每个约束添加IBOutlets:调用它们bubbleLeadingConstraintbubbleTopConstraint

更改您的代码:

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear() 

    bubbleLeftConstraint.constant = 168; 
    bubbleTopConstraint.constant = 220; 
} 

如果要更改宽度/高度,也和在代码中设置添加约束了点。

您现在可以通过更改约束来更改位置。您还可以通过更改常量并将self.view.layoutIfNeeded()放入动画块来为任何更改设置动画。

+0

不错!我得到它与这种方法工作!万分感谢! @Rory McKinnel –

相关问题