Swift 사용 시 iOS 7과 iOS 8의 UIView 애니메이션 동작이 다름
개시하다
Objective-C에서view의 width를 바꾸고 싶을 때self.view.frame = CGRectMake(0, 0, 100, 100);
처럼 프레임을 같이 썼지만 Swift를 사용한 후view.frame.size.width = 100
를 쓰는 경우가 많아졌다.
하지만 그 기술법을 사용할 때 잘 어울리는 부분이 있어서 쓰려고 했어요.
iOS 7과 iOS 8의 차이점
아래 코드는 화면 중앙의 100×100 크기의 빨간색 UIView에서 버튼을 눌러 화면 너비의 정사각형으로 확대한 후 원래 크기의 애니메이션을 복원한다.class ViewController: UIViewController {
let sampleView = UIView()
var defaultFrame = CGRectZero
override func viewDidLoad() {
super.viewDidLoad()
sampleView.backgroundColor = .redColor()
sampleView.frame.size = CGSize(width: 100, height: 100)
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
sampleView.center = view.center
defaultFrame = sampleView.frame
view.addSubview(sampleView)
}
@IBAction func insertFrameButton(sender: AnyObject) {
let width = UIScreen.mainScreen().bounds.size.width
var newFrame = CGRect(x: 0, y: 0, width: width, height: width)
newFrame.origin.y = view.center.y - width / 2
UIView.animateWithDuration(0.5, animations: {
self.sampleView.frame = newFrame
}) { finished in
UIView.animateWithDuration(0.5, animations: {
self.sampleView.frame = self.defaultFrame
}, completion: nil)
}
}
@IBAction func insertEachButton(sender: AnyObject) {
let width = UIScreen.mainScreen().bounds.size.width
UIView.animateWithDuration(0.5, animations: {
self.sampleView.frame.size.width = width
self.sampleView.frame.size.height = width
self.sampleView.center = self.view.center
}) { finished in
UIView.animateWithDuration(0.5, animations: {
self.sampleView.frame = self.defaultFrame
}, completion: nil)
}
}
}
@IBAction func insertFrameButton(sender: AnyObject)
사용자는 기존의 방식에 따라 CGRRect를 프레임에 대입하여 UIView 애니메이션을 만들었다.@IBAction func insertEachButton(sender: AnyObject)
에서 width,height,center는 각각 목적치를 대입하여 UIView를 애니메이션화했다.
그럼 각자의 행동이 다른지 살펴봅시다.
iOS 8의 동작
※ 아래 그림은 유튜브에 연결됩니다.
어떤 방법을 써도 똑같은 애니메이션을 한다.
근데 iOS 7은 어때요?
iOS 7에서의 동작
※ 아래 그림은 유튜브에 연결됩니다.
@IBAction func insertEachButton(sender: AnyObject)
의 상황에서 상상한 애니메이션과 다른 동작을 했다.
최후
UIView의 animation의 파행기 안에서는 CGRRect를 프레임에 대입하는 운영체제 간 동작이 다르지 않기 때문에 그것을 사용하는 것이 좋다.
Reference
이 문제에 관하여(Swift 사용 시 iOS 7과 iOS 8의 UIView 애니메이션 동작이 다름), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/marty-suzuki/items/fe07553c5cc7e52789d1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
아래 코드는 화면 중앙의 100×100 크기의 빨간색 UIView에서 버튼을 눌러 화면 너비의 정사각형으로 확대한 후 원래 크기의 애니메이션을 복원한다.
class ViewController: UIViewController {
let sampleView = UIView()
var defaultFrame = CGRectZero
override func viewDidLoad() {
super.viewDidLoad()
sampleView.backgroundColor = .redColor()
sampleView.frame.size = CGSize(width: 100, height: 100)
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
sampleView.center = view.center
defaultFrame = sampleView.frame
view.addSubview(sampleView)
}
@IBAction func insertFrameButton(sender: AnyObject) {
let width = UIScreen.mainScreen().bounds.size.width
var newFrame = CGRect(x: 0, y: 0, width: width, height: width)
newFrame.origin.y = view.center.y - width / 2
UIView.animateWithDuration(0.5, animations: {
self.sampleView.frame = newFrame
}) { finished in
UIView.animateWithDuration(0.5, animations: {
self.sampleView.frame = self.defaultFrame
}, completion: nil)
}
}
@IBAction func insertEachButton(sender: AnyObject) {
let width = UIScreen.mainScreen().bounds.size.width
UIView.animateWithDuration(0.5, animations: {
self.sampleView.frame.size.width = width
self.sampleView.frame.size.height = width
self.sampleView.center = self.view.center
}) { finished in
UIView.animateWithDuration(0.5, animations: {
self.sampleView.frame = self.defaultFrame
}, completion: nil)
}
}
}
@IBAction func insertFrameButton(sender: AnyObject)
사용자는 기존의 방식에 따라 CGRRect를 프레임에 대입하여 UIView 애니메이션을 만들었다.@IBAction func insertEachButton(sender: AnyObject)
에서 width,height,center는 각각 목적치를 대입하여 UIView를 애니메이션화했다.그럼 각자의 행동이 다른지 살펴봅시다.
iOS 8의 동작
※ 아래 그림은 유튜브에 연결됩니다.
어떤 방법을 써도 똑같은 애니메이션을 한다.
근데 iOS 7은 어때요?
iOS 7에서의 동작
※ 아래 그림은 유튜브에 연결됩니다.
@IBAction func insertEachButton(sender: AnyObject)
의 상황에서 상상한 애니메이션과 다른 동작을 했다.최후
UIView의 animation의 파행기 안에서는 CGRRect를 프레임에 대입하는 운영체제 간 동작이 다르지 않기 때문에 그것을 사용하는 것이 좋다.
Reference
이 문제에 관하여(Swift 사용 시 iOS 7과 iOS 8의 UIView 애니메이션 동작이 다름), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/marty-suzuki/items/fe07553c5cc7e52789d1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Swift 사용 시 iOS 7과 iOS 8의 UIView 애니메이션 동작이 다름), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/marty-suzuki/items/fe07553c5cc7e52789d1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)