UISearchBar検索アイコンのアニメーションを削除する方法はありますか?これは、応答時にUISearchBarの中央から左にアニメーション化されますか?UISearchBarの検索アイコンのアニメーションを削除します。
検索アイコンは、UISearchBarの中央ではなく左に表示され、ユーザーが応答したときにアニメーション化されません。
UISearchBar検索アイコンのアニメーションを削除する方法はありますか?これは、応答時にUISearchBarの中央から左にアニメーション化されますか?UISearchBarの検索アイコンのアニメーションを削除します。
検索アイコンは、UISearchBarの中央ではなく左に表示され、ユーザーが応答したときにアニメーション化されません。
import Foundation
import UIKit
@objc public class LeftAlignedSearchBar: UISearchBar, UISearchBarDelegate {
override public var placeholder:String? {
didSet {
if #available(iOS 9.0, *) {
if let text = placeholder {
if text.characters.last! != " " {
let attr = UITextField.appearanceWhenContainedInInstancesOfClasses([LeftAlignedSearchBar.self]).defaultTextAttributes
let maxSize = CGSizeMake(self.bounds.size.width - 86, 40)
let widthText = text.boundingRectWithSize(maxSize, options: .UsesLineFragmentOrigin, attributes:attr, context:nil).size.width
let widthSpace = " ".boundingRectWithSize(maxSize, options: .UsesLineFragmentOrigin, attributes:attr, context:nil).size.width
let spaces = floor((maxSize.width - widthText)/widthSpace)
let newText = text + ((Array(count: Int(spaces), repeatedValue: " ").joinWithSeparator("")))
if newText != text {
placeholder = newText
}
}
}
}
}
}
}
出典:https://medium.com/@maximbilan/ios-left-aligned-uisearchbar-b51ef36b6e1b
は私が
import Foundation
import UIKit
class LeftAlignedSearchBar: UISearchBar, UISearchBarDelegate {
override var placeholder:String? {
didSet {
if #available(iOS 9.0, *) {
if let text = placeholder {
if text.characters.last! != " " {
let textField = UITextField.appearance(whenContainedInInstancesOf: [LeftAlignedSearchBar.self])
let maxSize = CGSize(width: self.bounds.size.width - 100, height: 40)
let widthText = text.boundingRect(with: maxSize, options: .usesLineFragmentOrigin, attributes:textField.defaultTextAttributes, context:nil).size.width
let widthSpace = " ".boundingRect(with: maxSize, options: .usesLineFragmentOrigin, attributes:textField.defaultTextAttributes, context:nil).size.width
let spaces = floor((maxSize.width - widthText)/widthSpace)
let newText = text + ((Array(repeating: " ", count: Int(spaces)).joined(separator: "")))
if newText != text {
placeholder = "\(newText)"
}
}
}
}
}
}
}
スウィフト3 にあなたの答えKrennexのおかげで、それを変換Krennexの答えのオフに行きます!
インスタンス化の方法、インスタンス化に使用しているコード、実装したメソッドを委譲するなど詳細を投稿したい場合があります。 – Adrian