如何在UIImageView中更改UIImage的位置

Hen*_*own 5 image uiimageview swift

我有一个UIImage叫做image我想改变它的位置,imageView所以它可以稍微拖动,大约30px.有人能告诉我怎么做吗?这是我所要做的,但它不是正确的.

var image = UIImage()
var imageView = UIImageView(frame: CGRectMake(0, 0, view.frame.size.height * 0.22, view.frame.size.height * 0.22))
        imageView.center = CGPointMake(self.view.center.x, view.frame.size.height * 0.414)
        imageView.image = self.image
            imageView.layer.cornerRadius = imageView.frame.size.width / 2
            imageView.layer.borderWidth = 2.0
            imageView.layer.borderColor = UIColor(red: 254.0/255, green: 216.0/255, blue: 0/255, alpha: 1.0).CGColor
            imageView.clipsToBounds = true
            imageView.layer.contentsRect = CGRectMake(0, 20, imageView.frame.size.width, imageView.frame.size.height) //This is where I have being trying to do it but no success.
        imageView.contentMode = .ScaleAspectFill
        view.addSubview(imageView)
Run Code Online (Sandbox Code Playgroud)

Dun*_*n C 8

简短的回答:你没有.

您要做的是将图像视图添加为另一个视图的子视图.执行此操作的简单方法是将图像视图放在滚动视图中,约束以使其可以滚动的唯一位置向下,并且仅略微.然后你可以用零代码实现滚动.

编辑:

这不是一个真正的编码问题 - 它更像是一个Interface Builder问题.您需要设置滚动视图.滚动视图是一种视图,可让您查看较大视图的一部分.

您可以将滚动视图视为一张带有矩形孔的纸张.你在它下面放了一张更大的纸(滚动视图的内容视图),你可以滑动更大的纸张并通过这个孔查看它的不同部分.

这是你如何设置它.

将滚动视图拖动到视图控制器上.调整大小并为其添加约束以将其定位到您想要的位置.例如,如果您希望图像视图的大小为300x300点,并且希望能够将其向上或向下拖动20个点,则使滚动视图高出20个点.(w:300,h:320)

选择滚动视图内的视图并将其宽度设置为与滚动视图相同的宽度,但比滚动视图高20个点.(w:300,h:340).添加约束以锁定其高度和宽度.

现在你有一个足够大的滚动视图,可以显示300x300点的图像,顶部和底部有20个总空白区域.

您创建了一个大于20磅的内容视图,因此它可以在滚动视图中向上或向下滑动20个点.

将300x300点图像视图拖动到滚动视图内的视图中,为其指定图像,并添加约束以锁定其大小,并将其水平和垂直居中于其超视图中.

最后一步是设置滚动视图的内容大小.通常,您只需将滚动视图的内容大小设置为其内容视图的大小.您可以通过将以下代码添加到视图控制器的viewDidLoad来实现:

(假设您已将插座连接到您所调用的滚动视图theScrollView)

//Get the first (and only) subview of the scrollView.
let subview = theScrollView.subviews[0] as! UIView;

//Make the scroll view's contentSize the same size as the content view.
theScrollView!.contentSize = subview.bounds.size;
Run Code Online (Sandbox Code Playgroud)

也可以在没有任何代码的情况下设置滚动视图的内容大小.您将使用名为"用户定义的运行时属性"的IB(Interface Builder)功能.这是你如何做到的:(如果你使用这种方法不要添加上面的代码viewDidLoad)

在IB中选择滚动视图.按命令选项3以选择"身份检查器".在"用户定义的运行时属性"部分中,点击左侧的加号.编辑Key Path为"contentSize"(除"大小"中的"S"外的所有小写.这非常重要.)按Enter键更改键路径.然后点击"类型"列并选择"大小".值字段将显示"{0,0}".输入所需的内容大小:(上例中的"{300,340}".)

这样做是告诉IB"在运行时,在所选对象(滚动视图)中查找名为"contentSize"的属性.将该属性设置为CGSize类型的指定值.

完成后,您的IB"身份检查员"应如下所示:

在此输入图像描述

请注意,如果在使用"用户定义的运行时属性"时出现错误的密钥名称,那么当您显示该视图控制器时,应用程序会崩溃,并显示非常神秘的消息.

默认情况下,滚动视图会让您在拖动内容时"过冲",然后在放开时弹回到原位.您可以通过取消选中IB"属性检查器"中的"弹跳"复选框来关闭该功能(命令选项4)