рдПрдХ рд╢рд╛рдирджрд╛рд░ iOS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП 20 рд▓рд╛рдЗрдмреНрд░реЗрд░реА



рдЖрдИрдУрдПрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ, рдпрд╣ рдХрд┐рд╕реА рднреА рд░реЗрдЯрд┐рдВрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдо рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдмреАрд╕ рд╢рд╛рдирджрд╛рд░ / рдЙрдкрдпреЛрдЧреА рдЙрдкрдХрд░рдг рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдРрдкреНрдкрд▓ рдЧреИрдЬреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВред

рд╕рднреА рдПрдирд┐рдореЗрд╢рди рдЙрдирдХреЗ рдкреВрд░реНрдг рдЖрдХрд╛рд░ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рд╣реИрдВред
EDISON рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ - рд╡реЗрдм-рд╡рд┐рдХрд╛рд╕
рдЕрдиреБрд╡рд╛рдж EDISON рдХреЗ рд╕рдорд░реНрдерди рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╣рдо 1C-Bitrix рдкрд░ рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдФрд░ рд░рдЦрд░рдЦрд╛рд╡ рдореЗрдВ рд▓рдЧреЗ рд╣реБрдП рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди Android рдФрд░ iOS рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рднреА рд╣реИрдВ ред

рднрд╛рдЧ Iред 5 IOS рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ( рдореВрд▓ )


I.1ред Gmenu


рдЖрдЗрдП рдЧреЗрдиреБ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ, рд╕реНрд╡рд┐рдлреНрдЯ 5.1 рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдпрд╣ рдЬреАрдореЗрд▓ рдПрдкреНрд▓реАрдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдПрдХ рдирдпрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ!

рд╢реАрд░реНрд╖ рдЦреЛрдЬ рдмрд╛рд░ рдореЗрдВ рдмрдЯрди рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдбрд╝реЗ рдЖрдЗрдХрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдореЗрдиреВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИ рдФрд░ рд▓рд╛рдЗрдиреЛрдВ (рд╕рд╛рд░рдгреАрдмрджреНрдз рд░реВрдк рдореЗрдВ) рдХреЛ рдиреАрдЪреЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреА рд╣реИред

I.2ред ImageViewer.swift




ImageViewer.swift рдПрдХ рдЖрд╕рд╛рди рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЫрд╡рд┐ рджреАрд░реНрдШрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

"рд░рд╛рдд" рдореЛрдб, рд▓реИрдВрдбрд╕реНрдХреЗрдк рдУрд░рд┐рдПрдВрдЯреЗрд╢рди, рдбреНрд░реИрдЧ рдПрдВрдб рдбреНрд░реЙрдк рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

I.3ред sidemenu


рд╕рд╛рдЗрдбрдореЗрдиреВ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдЗрдб рдореЗрдиреВ рд╣реИред рдПрдХ рд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб рдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдиреАрдореЗрд╢рди рдХреА рдЖрда рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢реИрд▓рд┐рдпрд╛рдБ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп, рджреЛрдиреЛрдВ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рд╕рд╛рдЗрдб рдореЗрдиреВ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡рд╛рдЗрдк рдЬреЗрд╕реНрдЪрд░ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИред

I.4ред SPPermissions



рдПрд╕рдкреАрдкреАрдПрди - рдПрдХ рдПрдкреАрдЖрдИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдЕрдиреБрдорддрд┐ рдорд╛рдВрдЧрддрд╛ рд╣реИред рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЛрдб: рд╕реВрдЪреА, рд╕рдВрд╡рд╛рдж рдФрд░ рджреЗрд╢реАред

рдРрдкреНрдкрд▓-рд╢реИрд▓реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ iPhone, iPad, рдирд╛рдЗрдЯ рдореЛрдб рдФрд░ рдЯреАрд╡реАрдУрдПрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рд╕рдорд░реНрдерд┐рдд рдЕрдиреБрдорддрд┐ рдЕрдиреБрд░реЛрдз: тАв рдХреИрдорд░рд╛ тАв рдлреЛрдЯреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА тАв рд╕реВрдЪрдирд╛рдПрдВ тАв рд╕реНрдерд╛рди тАв рдорд╛рдЗрдХреНрд░реЛрдлреЛрди тАв рдХреИрд▓реЗрдВрдбрд░ тАв рд╕рдВрдкрд░реНрдХ тАв рдЖрдВрджреЛрд▓рди тАв рдореАрдбрд┐рдпрд╛ тАв тАв рд╕рдВрджреЗрд╢ тАв рдмреНрд▓реВрдЯреВрде

I.5ред SPStorkController



рдЕрдВрдд рдореЗрдВ, SPStorkController рдРрдкреНрдкрд▓ рдореНрдпреВрдЬрд┐рдХ, рдореЗрд▓ рдФрд░ рдкреЙрдбрдХрд╛рд╕реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдорд╛рди рд╕реНрд╡рд┐рдлреНрдЯ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рд╣реИред

рдпрд╣ рдмрд╕ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдХреЗ рдмрд╛рдИрдВ рдУрд░ рдПрдХ рдХрд░реАрдмреА рдмрдЯрди рдФрд░ рдмреАрдЪ рдореЗрдВ рдПрдХ рддреАрд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИред







рднрд╛рдЧ II рдЖрдкрдХреЗ рдЕрдЧрд▓реЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП 5 рдЖрдИрдУрдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА ( рдореВрд▓ )


II.1ред PhoneNumberKit



рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП , PhoneNumberKit , рдПрдХ рд╣рд▓реНрдХреЗ iOS рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рд┐рдлреНрдЯ 5.0 рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдереА, рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рд╕реНрд╡рд░реВрдкрдг рдФрд░ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдп рдлреЛрди рдирдВрдмрд░ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдПред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ - рдХреЗрд╡рд▓ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рдРрд╕реА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:
import PhoneNumberKit let phoneNumberKit = PhoneNumberKit() do { let phoneNumber = try phoneNumberKit.parse("+39 3 12 542644") let phoneNumberCustomDefaultRegion = try phoneNumberKit.parse("+39 23 2245 23442", withRegion: "IT", ignoreType: true) } catch { print("Generic parser error") } 

рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдПрдХ рд╕реБрдВрджрд░ PhoneNumberTextField рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬрд┐рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЛрдВ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  • withFlag рд╡рд░реНрддрдорд╛рди рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рджреЗрд╢ рдХрд╛ рдЭрдВрдбрд╛ рджрд┐рдЦрд╛рдПрдЧрд╛ред рдзреНрд╡рдЬ рдкрд╛рда рдмреЙрдХреНрд╕ рдХреЗ рдмрд╛рдИрдВ рдУрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  • withExamplePlaceholder рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рд╕рдВрдЦреНрдпрд╛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП currentRegion attributePlace рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред


II.2ред DateScrollPicker



DateScrollPicker рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рди рддрд┐рдерд┐ рдкрд┐рдХрд░ рджреГрд╢реНрдп рд╣реИ рдЬреЛ рд╕реНрд╡рд┐рдлреНрдЯ 5 рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред

рдЗрд╕ рдХреИрд▓реЗрдВрдбрд░ рдореЗрдВ рдЕрдВрддрд╣реАрди рддрд╛рд░реАрдЦ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдФрд░ рдПрдХ рдПрдирд┐рдореЗрдЯреЗрдб рдЪрдпрди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдлрд╝реЙрдиреНрдЯ рдФрд░ рд░рдВрдЧ рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рджрд░реНрд╢рд┐рдд рджрд┐рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдирд╛, рддрд┐рдерд┐ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛, рдлрд╝реЙрдиреНрдЯ / рд░рдВрдЧ рдмрджрд▓рдирд╛ рдФрд░ рдХрдИ рдЕрдиреНрдп рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред

II.3ред PostalCodeValidator



рдкреЛрд╕реНрдЯрд▓рдХреЛрдбрд╡реЗрд▓рд┐рдбреЗрдЯрд░ 200 рд╕реЗ рдЕрдзрд┐рдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреЛрд╕реНрдЯрд▓ рдХреЛрдб рдХрд╛ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рд╣реИред

рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ:
 import Foundation import PostalCodeValidator if let validator = PostalCodeValidator(locale: .current) { // United States (IT) validator.validate(postalCode: "43100")) // true validator.validate(postalCode: "123456789")) // false } 

II.4ред рддрд░рд▓ рдХрдбрд╝реА рдЪреЛрдЯ



рддрд░рд▓-рд╕реНрд╡рд╛рдЗрдк рдПрдХ рдЖрд╕рд╛рди-рд╕реЗ-рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ swipe-container рдирд┐рдпрдВрддреНрд░рдг рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдкрд╣рд▓реЗ рд░рди рдХреЗ рд▓рд┐рдП рдпрд╛ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдПред

рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб рдпрд╛ рдХреЛрдб рд╕реЗ LiquidSwipeContainerController рдХреНрд▓рд╛рд╕ рдХреЛ LiquidSwipeContainerController рдФрд░ рдлрд┐рд░ LiquidSwipeContainerDataSource рдХреНрд▓рд╛рд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

II.5ред FloatingPanel



рдЕрдВрдд рдореЗрдВ рдЗрд╕ рдЦрдВрдб рдореЗрдВ, рдлреНрд▓реЛрдЯрд┐рдВрдЧрдкреИрдирд▓ рдРрдкреНрдкрд▓ рдореИрдкреНрд╕ рдЬреИрд╕реЗ рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡рдЪреНрдЫ рдФрд░ рд╣рд▓реНрдХреЗ рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреИрдирд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред

рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрдИ рдбрд┐рдЬрд╛рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреИрдкреНрдЪрд░ рдорд╛рд░реНрдХрд░, рдХреИрдкреНрдЪрд░ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХрд╛ рд▓реЗрдЖрдЙрдЯ, рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рднрд░рдирд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рдЗрд╢рд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдШрдЯрдирд╛рдУрдВред рдЖрдк рднрд╛рдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреИрдирд▓ рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ README рд╣реИ ред






рднрд╛рдЧ III 5 рдЖрдИрдУрдПрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди ( рдореВрд▓ ) рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП


III.1ред BSZoomGridScrollView



рдпрд╣рд╛рдВ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг, рдПрдХ рдмреЗрдЬреЛрд╕ рдЖрдИрдУрдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА BSZoomGrid рд╕реНрдХреНрд░реЙрд▓рд╡реНрдпреВ рдЖрддрд╛ рд╣реИ, рдЬреЛ рдРрдкреНрдкрд▓ рдлреЛрдЯреЛрдЬрд╝ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдорд╛рди рд╕реНрдХреЗрд▓ рдХреЗ рд╕рд╛рде рдЫрд╡рд┐рдпреЛрдВ рдХреА рдкреВрд░реА рд╕рд░рдгреА рд╡рд╛рд▓реЗ рдЧреНрд░рд┐рдб рдХрд╛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рджреГрд╢реНрдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдХ рд▓рдВрдмреА рдкреНрд░реЗрд╕ рдФрд░ рдЬрд╝реВрдо рдЗрд╢рд╛рд░реЗ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЪрдпрдирд┐рдд рдЫрд╡рд┐ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИред рдХреЙрд▓рдо рдФрд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

III.2ред BouncyLayout




BouncyLayout рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬреЛ рд╣рд░ UICollectionView рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдЙрдЫрд╛рд▓ рджреЗрддрд╛ рд╣реИ! рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рд┐рдлреНрдЯ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрд╖реИрддрд┐рдЬ рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдЖрдкрдХреЛ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА BouncyLayout , BouncyLayout рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ UICollectionView рдЬреЛрдбрд╝реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
 import BouncyLayout let collectionLayout = BouncyLayout() UICollectionView(frame: .zero, collectionViewLayout: collectionLayout) 

III.3ред рдЧреНрд▓рд╛рдЗрдбрд┐рдВрдЧ рд╕рдВрдЧреНрд░рд╣



рдЧреНрд▓рд╛рдЗрдбрд┐рдВрдЧ-рд╕рдВрдЧреНрд░рд╣ UICollectionView рдореЗрдВ рд▓рд╛рдЧреВ рдХреНрд╖реИрддрд┐рдЬ рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд╛ рдПрдХ рд╕реБрдВрджрд░, рдЕрдиреБрдХреВрд▓рди рдпреЛрдЧреНрдп рджреГрд╢реНрдп рд╣реИред

рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рд╡реНрдпреВ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, Storyboard рдПрдХ UIView рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдХреНрд▓рд╛рд╕ рдХреЛ GlidingCollection рдмрджрд▓ GlidingCollection , рдлрд┐рд░ @IBOutlet рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдХреЛрдб рд╕реЗ рд╡реНрдпреВ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ, рд╡реНрдпреВ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ GlidingCollectionDatasource рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдФрд░ GlidingCollectionDatasource рд╕реЗ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпреВ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред

рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЬреАрдердм рдкрд░ " рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ " рдЕрдиреБрднрд╛рдЧ рджреЗрдЦреЗрдВред

III.4ред CarLensCollectionViewLayout



CarLensCollectionViewLayout рдПрдХ рдЖрд╕рд╛рди-рд╕реЗ-рдЙрдкрдпреЛрдЧ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рд▓реЗрдЖрдЙрдЯ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХреЛрдб рдХреЗ рдХреБрдЫ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде UICollectionView рдореЗрдВ рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░ рдПрдиреАрдореЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ!

рдЖрдк CarLensCollectionViewLayoutOptions рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдмрджрд▓рдХрд░ рд▓реЗрдЖрдЙрдЯ рдХреЛ рднреА рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

рдиреНрдпреВрдирддрдо рджреВрд░реА - рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдиреНрдпреВрдирддрдо рджреВрд░реАред
DecelerationRate - рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдзреАрдорд╛ред
ShouldShowScrollIndicator - рдХреНрдпрд╛ рд╕реНрдХреНрд░реЙрд▓ рд╕рдВрдХреЗрддрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
Item Size - рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХрд╛ рдЖрдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

III.5ред рд░рдВрдЧ



рдФрд░ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рд╣реНрдпреВ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рд░рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рд░рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд░рдВрдЧ рдЧреБрдгреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ (рдЬреИрд╕реЗ .isDarkColor рдпрд╛ .isBlackOrWhite ), рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓ рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдмрдирд╛рдПрдВ, рд░рдВрдЧ рдХреЗ рд▓рд┐рдП рдиреАрд▓рд╛ / рд╣рд░рд╛ / рд▓рд╛рд▓ рдШрдЯрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ!

рдЕрдзрд┐рдХ рдЙрджрд╛рд╣рд░рдг рд╕рд░рдХрд╛рд░реА рд░реЗрдкреЛ рдкрд░ рд╣реИрдВ ред







рднрд╛рдЧ IV 5 рдЖрдИрдУрдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬреЛ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓реЛрдХрдкреНрд░рд┐рдп ( рдореВрд▓ ) рдмрдирд╛ рджреЗрдЧреА


IV.1.TKSwitcherCollection




рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, TKSwitcherCollection , рдПрдирд┐рдореЗрдЯреЗрдб рдирд┐рдпрдВрддреНрд░рдг рд╕реНрд╡рд┐рдЪ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ред

рдЪрд╛рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрд╡рд┐рдЪ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:
TKSimpleSwitch тЖТ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕реНрд╡рд┐рдЪред
TKExchangeSwitch тЖТ рдЬрдм рдЯрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдП рддреЛ рдЖрдХрд╛рд░ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред
TKSmileSwitch тЖТ рдИрдореЛ рд╕реНрд╡рд┐рдЪ (рджреБрдЦрдж / рдордЬрд╝реЗрджрд╛рд░)ред
TKLiquidSwitch тЖТ рджреНрд░рд╡-рд╢реИрд▓реА рдПрдиреАрдореЗрд╢рди рдХреЗ рд╕рд╛рде рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВред

IV.2.CocoaTextField



CocoaTextField рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдФрд░ рд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд╕рдХреНрд░рд┐рдп / рдирд┐рд╖реНрдХреНрд░рд┐рдп рд░рдВрдЧ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╛ рдлрд╝реЛрдХрд╕ рдореЗрдВ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛ рд░рдВрдЧ, рд╕реАрдорд╛рдУрдВ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд░рдВрдЧ, рдЖрджрд┐ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг:
 let v = CocoaTextField() v.inactiveHintColor = UIColor(red: 145/255, green: 222/255, blue: 233/255, alpha: 1) v.activeHintColor = UIColor(red: 777/255, green: 122/255, blue: 187/255, alpha: 1) v.focusedBackgroundColor = UIColor(red: 200/255, green: 230/255, blue: 250/255, alpha: 1) v.defaultBackgroundColor = UIColor(red: 250/255, green: 250/255, blue: 250/255, alpha: 1) v.borderColor = UIColor(red: 239/255, green: 239/255, blue: 239/255, alpha: 1) v.errorColor = UIColor(red: 231/255, green: 76/255, blue: 60/255, alpha: 0.7) v.borderWidth = 3 v.cornerRadius = 14 


IV.3.EXPANDING рд╕рдВрдХрд▓рди



рд╡рд┐рд╕реНрддрд╛рд░ рд╕рдВрдХрд▓рди рдПрдХ рд╕реНрд╡рд┐рдлреНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬреЛ рдПрдХ рдпреВрдЖрдИ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХреЛ рдПрдирд┐рдореЗрдЯ рдХрд░рддрд╛ рд╣реИред

рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ UICollectionViewCell рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдПрдХ UICollectionViewCell рдмрдирд╛рдПрдВ рдЬреЛ UICollectionViewCell рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗред рдЙрд╕рдХреЗ рдмрд╛рдж, FrontView рдФрд░ BackView ред рдлрд┐рд░ рдЖрдк ExpandingViewController рд╕реЗ UICollectionViewDataSource UIViewController рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╕реЗрд▓ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХ UICollectionViewDataSource рдЬреЛрдбрд╝реЗрдВред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рднрдВрдбрд╛рд░ рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ ред

IV.4 рдПрдирд┐рдореЗрдЯреЗрдбрдХреЙрд▓рд╢рдирд┐рдпрди рд╡реНрдпреВрд▓реЗрдЖрдЙрдЯ



рдЖрдЗрдЯрдо рдХреЗ рдмреАрдЪ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдкрд░ ICollectionView рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдирд┐рдореЗрдЯреЗрдб рд╕рдВрдХреНрд░рдордг рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред AnimatedCollectionViewLayout UICollectionViewLayout рдХрд╛ рдПрдХ рдЙрдкрд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ UICollectionView рдХрд╕реНрдЯрдо рдмрджрд▓рд╛рд╡ рдФрд░ рдПрдирд┐рдореЗрд╢рди рдЬреЛрдбрд╝рддрд╛ рд╣реИ!

рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдлрд┐рд░ рдПрдХ AnimatedCollectionViewLayout рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ, рдЗрд╕рдореЗрдВ рдПрдХ animator рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ UICollectionView рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред

IV.5.CollectionViewSlantedLayout



рд╣рдо рд╕рдВрдЧреНрд░рд╣ UICollectionViewLayout рд╕рдорд╛рдкреНрдд рд▓реЗрдЖрдЙрдЯ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ , UICollectionViewLayout рдХрд╛ рдПрдХ рдФрд░ рдЙрдкрд╡рд░реНрдЧ рдЬреЛ рдЖрдкрдХреЛ UICollectionView рдореЗрдВ рддрд┐рд░рдЫреА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ UICollectionView рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдХреНрд╖реИрддрд┐рдЬ рдХреЗ рд╕рд╛рде рд╣рд╛рд▓рд╛рдВрдХрд┐ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдХреЗ рд╕рд╛рде, рдЧрддрд┐рд╢реАрд▓ рд╕реЗрд▓ рдКрдВрдЪрд╛рдИ рдХреЗ рд╕рд╛рдеред

рдХреНрдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдЖрдХрд╛рд░ / рджрд┐рд╢рд╛ / рдХреЛрдг, рд╕реНрдХреНрд░реЙрд▓ рджрд┐рд╢рд╛, рд▓рд╛рдЗрди рд░рд┐рдХреНрддрд┐, рддрддреНрд╡ рдЖрдХрд╛рд░ рдФрд░ рдкрд╣рд▓реЗ / рдЕрдВрддрд┐рдо рд╕реЗрд▓ рдХреЗ рдЭреБрдХрд╛рд╡ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред








рдпреЗ рднреА рдкрдврд╝реЗрдВ
EDISON рдмреНрд▓реЙрдЧ:


15 рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдФрд░ рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рдЖрдЗрдХрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА

Source: https://habr.com/ru/post/hi485460/


All Articles