레거시 앱의 iOS13 대응(UISegmentedControl편
소개
UISegmentedControl 편과 타이틀에는 기재하고 있습니다만,
속편 등은 지금은 전혀 없습니다 www
그런데, 제가 평소 담당하고 있는 앱은, 업무로 이용하는 InHouse의 낡은 앱입니다만
올해도 iOS의 버전 업 대응을 매번마다 실시하고 있었습니다.
UISegmentControl에 관해서도 올해는 크게 외형이 바뀔 것이라고 알고 있었기 때문에
TintColor를 설정하고 앱에 맞는 외형으로 대응하는 것으로 충분할 것이라고 생각했습니다.
앞으로도 외형이 iOS13에서 변경되었다는 사실을 전했고 한 번은 OK를 받았습니다.
역시, 전의 외형으로 되돌려 주지 않겠습니까?
…
오 콫 어 !!
Apple이 iOS13에서 변경한 외형에 대해
iOS12 이전의 상태로 되돌아가는 것은
Apple에 대한 반역행위나요ーーーー(´;ω;`)(멋대로 생각하고 있을 뿐?)
가능하면 지금의 iOS13의 외형 그대로 커스터마이즈하고 싶었습니다만,,,
NG가 나온 것은 어쩔 수 없다. iOS12 이전의 외형으로 할 수밖에 없다. . 할 수 있을까. . .
결과적으로 말하면 가능했습니다! !
비교하면 원래 iOS12 이전의 물건과 약간 다른 것은 알지만 전혀 허용 범위!
실제 이미지를 부디! !
ViewController.swift
override func viewDidLoad() {
super.viewDidLoad()
if #available(iOS 13.0, *) {
let segSizeSingle = CGSize.init(width: self.segment.frame.size.width, height: self.segment.frame.size.height)
self.segment.setBackgroundImage(self.makeImage(UIColor.clear, size: segSizeSingle), for: .normal, barMetrics: .default)
self.segment.setBackgroundImage(self.makeImage(self.segment.tintColor, size: segSizeSingle), for: .selected, barMetrics: .default)
self.segment.setTitleTextAttributes([.foregroundColor : UIColor.white], for: .selected)
self.segment.setTitleTextAttributes([.foregroundColor : self.segment.tintColor!], for: .normal)
self.segment.layer.borderColor = self.segment.tintColor.cgColor
self.segment.layer.borderWidth = 1
}
}
func makeImage(_ color : UIColor, size : CGSize) -> UIImage {
UIGraphicsBeginImageContext(size)
let rect = CGRect(origin: CGPoint.zero, size: size)
let context = UIGraphicsGetCurrentContext()!
context.setFillColor(color.cgColor)
context.fill(rect)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image!
}
세그먼트의 BGImage와 레이어 등의 외형을 다양하게 만져 실현했습니다!
이번 샘플에서는
ViewDidLoad
에 기재했습니다만실제로 구현하는 경우는
Extention
또는 Objective-C라면 Category
앱 전체에서 외형을 맞추는 것도 간단하게 할 수 있다고 생각하므로부디, 활용해 주세요! ! ! !
(그런 낡은 외형으로 바꾸는 요망이야!라든지는 말하지 말고…)
끝까지 봐 주셔서 감사합니다! !
Reference
이 문제에 관하여(레거시 앱의 iOS13 대응(UISegmentedControl편), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tananonaka/items/b3a093596700dd89e057텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)