我在很多地方看到了这个话题,但我无法弄清楚为什么我的代码无法正常工作。
我有一个人造地平线的图像,从-90度到90度。我想通过一个小窗口观看它,它只显示-20到20度左右。然后我想根据我的机器人倾斜的角度来上下移动图像。
我首先将UIImage添加到UIImageView。所有对齐都是正确的。然后我认为上下移动图像的最简单方法是将UIImageView添加到UIScrollView。现在我无法弄清楚如何正确对齐。如果我在滚动视图中拖动,我会在那里看到图像,但是一旦我松开它就会回到它原来的位置。
这是我的代码。这是我写的第一个Swift代码,所以如果有更好的方法可以做到这一点我欢迎任何嘲笑(开玩笑,温柔)
override func viewDidLoad() {
super.viewDidLoad()
let imageRect = CGRectMake(self.view.frame.width / 2 - 100, self.view.frame.height / 2, 200, 200)
self.myImageView = UIImageView.init()
self.myImageView = UIImageView(frame: imageRect)
self.myImageView.contentMode = UIViewContentMode.Center
self.myImageView.clipsToBounds = true
self.myImageView.image = UIImage.init(named:"horizon")
//self.view.addSubview(self.image)
self.myScrollView = UIScrollView(frame: imageRect)
self.myScrollView.contentSize = CGSize(width: imageRect.width, height: imageRect.height)
self.myImageView.center = self.myScrollView.center
self.myScrollView.frame = imageRect
self.myScrollView.backgroundColor = UIColor.blackColor()
self.myScrollView.contentOffset = CGPoint(x: 0, y: 0)
self.myScrollView.addSubview(self.myImageView)
self.view.addSubview(self.myScrollView)
/////////
self.connectionStatusLabel.text = "Disconnected"
self.connectionStatusLabel.textColor = UIColor.redColor()
self.textBox.font = UIFont(name: self.textBox.font!.fontName, size: 8)
// Watch Bluetooth connection
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.connectionChanged(_:)), name: BLEServiceChangedStatusNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.dataReceived(_:)), name: BLEDataChangedStatusNotification, object: nil)
// Start the Bluetooth discovery process
btDiscoverySharedInstance
}
答案 0 :(得分:1)
您必须将scrollView的contentSize设置为实际图像大小而不是imageView的大小。并将imageView的大小设置为实际图像大小:
let image = UIImage.init(named:"horizon")
// Set the imageView's size to the actual image size
self.myImageView.frame = CGRect(x: 0, y: 0, width: size.width, height: size.height)
...
...
// Set the scrollView's contentSize to the actual image size
self.myScrollView.contentSize = image.size