2017-05-28 18 views
1

UISearchBar検索アイコンのアニメーションを削除する方法はありますか?これは、応答時にUISearchBarの中央から左にアニメーション化されますか?UISearchBarの検索アイコンのアニメーションを削除します。

検索アイコンは、UISearchBarの中央ではなく左に表示され、ユーザーが応答したときにアニメーション化されません。

+0

インスタンス化の方法、インスタンス化に使用しているコード、実装したメソッドを委譲するなど詳細を投稿したい場合があります。 – Adrian

答えて

0
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

0

は私が

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の答えのオフに行きます!

関連する問題