采用了Autolayout和Storyboard后,我不再按照精确尺寸设计屏幕了,所以当我使用图像时,我倾向于使用相当大尺寸的图像,这样它在iPad上看起来很清晰,但可以按比例缩小较小的iPhone。我将此图片拖到资产目录中。
当我将图像放入我的故事板中的视图控制器时,图像希望成为其固有的大小。我只能通过设置一个特定的宽度,与另一个对象成比例的宽度,或者通过将它限制在另外两个项目之间来显示它。
我现在正处于项目的另一个角落,我需要在代码中添加图像。虽然我为图像的框架设置了特定的高度和宽度,但图像仍然以其固有尺寸显示在屏幕上,而不是我使用它设置的位置:
myImage.frame = CGRect(x: self.view.center.x - 50, y: 100, width: 100, height: 100)
关于我缺少的任何想法?谢谢!
答案 0 :(得分:1)
我希望您在imageView
和CenterX
中添加margin top 100
。并保持图像方面的正方形大小100,100。下面的代码将帮助您。
let imageName = "your image name in resource"
let imageView = UIImageView(frame: CGRectMake(0, 0, 200, 200))
imageView.image = UIImage(named: imageName)
imageView.contentMode = .ScaleAspectFit
imageView.setTranslatesAutoresizingMaskIntoConstraints(false)
self.view.addSubview(imageView)
// add your constraint
let constTop = NSLayoutConstraint(item: imageView, attribute:.Top, relatedBy: .Equal, toItem: self.view, attribute: .Top, multiplier: 1, constant: 100)
// var constLeading = NSLayoutConstraint(item: imageView, attribute: .Leading, relatedBy: .Equal, toItem: self.view, attribute: .Leading, multiplier: 1, constant: self.view.center.x - 50)
var constCenterX = NSLayoutConstraint(item: imageView, attribute: .CenterX, relatedBy: .Equal, toItem: self.view, attribute: .CenterX, multiplier: 1, constant: 0);
var constWidth = NSLayoutConstraint(item: imageView, attribute: .Width, relatedBy: .Equal, toItem: nil, attribute: .Width, multiplier: 1, constant: 100);
var constHight = NSLayoutConstraint(item: imageView, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .Height, multiplier: 1, constant: 100);
imageView.addConstraints([constHight, constWidth])
self.view.addConstraints([constTop, constCenterX])
希望这有帮助!
答案 1 :(得分:-1)
您需要设置UIImageView的contentMode
,它实际上是UIView
的属性:
如果您在代码中采用布局,我希望您在正确的位置执行此操作...通过覆盖layoutSubviews()
,如果 需要由外部触发事件,该事件在父视图上触发setNeedsLayout()
。
如果必须在代码中完成,则需要进行大量握手和配置。