我在Swift中为我的应用创建了一个启动画面,而且我遇到了一个问题,当我缩放图片时,它的大小从左上角开始,因此会改变整个图像远离屏幕中心。
我试图手动减去估算的移动差异(如下面的代码所示),但是闭包内的第一行代码并不会将图像保持在每个屏幕尺寸的中心位置。截至目前,它只出现在iPhone 6 Plus的屏幕上。
UIView.animateWithDuration(1.5, animations: { () -> Void in
self.image.frame = CGRectMake((self.image.center.x)/2 - 20, (self.image.center.y)/2 + 20, 250, 250)
})
是否有一行代码允许图像在所有屏幕尺寸上保持居中,即使在缩放后也是如此?
感谢所有回复的人。
答案 0 :(得分:0)
不要更改frame
,而是更改bounds
。这使您可以在保留center
不变量的同时更改大小。将边界的原点保持在0,0
并仅将边界大小的宽度和高度更改为您想要的任何值。
答案 1 :(得分:0)
您可以使用
self.image.center = self.view.center
或者您可以在UIImageView
中将ContentMode
的{{1}}媒体资源设为center
。另外,请确保InterfaceBuilder
符合splashImage.png
的相应大小和imageView
大小SuperView
。
答案 2 :(得分:0)
首先,如何保持一些UIImageView居中的最简单方法是使用autolayout将其绑定到superview的所有方面,并将contentMode设置为" Center"正如Sudhin Davis建议的那样,或者设置"对齐容器中的水平中心"和#34;对齐容器中的垂直中心"它为0(在构建时没有设置或删除高度和宽度)。
但是如果你想创建一个启动画面ViewController,它将会延长'你的本地启动画面'当你做一些工作时的图像呈现,那么你可以使用类似的东西:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
imageView?.image = UIImage(named: splashScreenImageName())
}
其中imageView
是一个简单的UIImageView出口,它绑定到它的所有方面,超级视图和splashScreenImageName()
是一个func,它使用来自此答案的建议方法之一提供Splash屏幕图像名称{ {3}}
我通常使用这样的东西:
func splashScreenImageName() -> String {
// Construct the name.
var splashScreenImageName = "LaunchImage";
if (UIDevice.isIPhone6Plus) {
splashScreenImageName += "-800-Portrait-736h";
}
else if (UIDevice.isIPhone6) {
splashScreenImageName += "-800-667h";
}
else if(UIDevice.isIPhone5) {
splashScreenImageName += "-700-568h";
}
else if (UIDevice.isIPad) {
splashScreenImageName += "-700-Landscape";
}
else {
splashScreenImageName += "-700";
}
return splashScreenImageName;
}
优点:
答案 3 :(得分:0)
如果您想为比例设置动画,为什么不使用CGAffineTransform?
ng-mouseover="mouseoverOnStep(Color.color_value, '.mask-second-{{Color.id}}');"