рд╕реНрд╡рд┐рдлреНрдЯ рдврд╛рдВрдЪреЗ рдореЗрдВ рд╕реА-рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХреИрд╕реЗ рдПрдореНрдмреЗрдб рдХрд░реЗрдВ



2014 рдореЗрдВ, рд╕реНрд╡рд┐рдлреНрдЯ рдХреЛ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдРрдкреНрдкрд▓ рдХреЗ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рднрд╛рд╖рд╛ рдереАред рдирд╡реАрдирддрд╛ рди рдХреЗрд╡рд▓ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓реЗ рдЖрдИ, рдмрд▓реНрдХрд┐ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреА - рдЬреЛ рдкреБрд░рд╛рдиреЗ рдкреБрд░рд╛рдиреЗ рд╕реА-рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реВрдВрдЧрд╛ - рд╕реНрд╡рд┐рдлреНрдЯ рдврд╛рдВрдЪреЗ рдореЗрдВ рд╕реА-рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдВрдбрд▓ред рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ; рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рд╕рдордЭрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрд▓реИрдВрдЧ рд╕реНрдкрд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред

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

рдХрд╛рдорд╡рд╛рд╕рдирд╛ рддреИрдпрд╛рд░ рдХрд░рдирд╛


рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ libgif рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реНрд░реЛрдд рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

  1. рдпрд╣рд╛рдВ рдирд╡реАрдирддрдо рдЯрд╛рд░рдмреЙрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ ред
  2. рдХрдВрд╕реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЕрдирдкреИрдХ рдХрд░реЗрдВ, рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЪрд▓рд╛рдПрдВ:

    ./configure && make check 

    рдиреЛрдЯ: рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо x86-64 рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╕рдВрдХрд▓рди рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреЗрд╡рд▓ iOS рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдпрд╛ macOS рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдорд▓реНрдЯреА-рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╕реНрдЯреЗрдЯрд┐рдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╖рдп рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдирд╣реАрдВ рдЫреВрддрд╛ рд╣реВрдВред рдЙрдкрдпреЛрдЧреА рдирд┐рд░реНрджреЗрд╢ рдпрд╣рд╛рдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред
  3. рдпрджрд┐ рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╛рдЗрд▓реЗрдВ ${lib_gif_source}/lib/.libs рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред рд╣рдо рджреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ:

     lib/.libs/libgif.a #   lib/gif_lib.h #  

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрдЕрдк


рдЕрдм рд╣рдо рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВрдЧреЗред

  1. рдХреЛрдХреЛ рдЯрдЪ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ, рдЗрд╕реЗ GifSwift рдирд╛рдо рджреЗрдВ ред
  2. рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рднреАрддрд░ рдПрдХ рдЕрд▓рдЧ рд╕рдореВрд╣ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ libgif рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВред
  3. рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд▓рдХреНрд╖реНрдп рдЬреЛрдбрд╝реЗрдВред

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЕрдВрддрд┐рдо рд╕рдВрд░рдЪрдирд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдиреА рдЪрд╛рд╣рд┐рдП:



рд╕реНрд╡рд┐рдлреНрдЯ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░реЗрдВ


рд╕реНрд╡рд┐рдлреНрдЯ рдореЗрдВ рд╕реА-рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕реЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рд╡рд░рдг рдПрдХ .modulemap рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рд╣реИ рдФрд░ рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдЯрд┐рдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрд╡рд┐рдлреНрдЯ рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХреЛрдб ( @import рдХрд╛ рдЙрдкрдпреЛрдЧ @import ) рдореЗрдВ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рд╕реНрдкрд╖реНрдЯ рдореЙрдбреНрдпреВрд▓


рдЗрди рд╕реАрдорд╛рдУрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВрдЧреЗ - рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ред рдПрдХ рд╕реНрдкрд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореВрд▓ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП *_Private.h рд╕рдорд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕рдореЗрдВ рдШреЛрд╖рд┐рдд рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ (рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ) рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ред

рд╣рдо рдврд╛рдВрдЪреЗ рдХреЗ рдЕрдВрджрд░ рд╕реА-рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЙрддреНрдкрдиреНрди Xcode рдореЙрдбреНрдпреВрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо libgif.a рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд▓рд┐рдВрдХ (рд▓рд┐рдВрдХ gif) рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕реАрдзреЗ Xcode рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВред

рдиреЛрдЯ: рд╕реНрдкрд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП , рдпрд╣рд╛рдВ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

  1. рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ GifSwift.modulemap рдирд╛рдордХ рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ:

     framework module GifSwift { umbrella header "GifSwift.h" explicit module CLibgif { private header "gif_lib.h" } export * } 

    рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдХреНрд▓рд┐рдмреАрдл рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ рдФрд░ рдЗрдирдореЗрдВ рдПрдХ рдШреЛрд╖рд┐рдд рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдмрд╕ рдПрдХ рд╣реИ)ред рдлрд╝рд╛рдЗрд▓ рдХреЛ рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдореА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  2. рдореЙрдбреНрдпреВрд▓ рд╡рд┐рд╡рд░рдг рдлрд╝рд╛рдЗрд▓ рдХреЛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд▓рдХреНрд╖реНрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

     Build Settings тАФ Packaging тАФ Module Map (MODULEMAP_FILE) = $SRCROOT/GifSwift/GifSwift.modulemap 
  3. libgif рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдирд┐рдЬреА рд╣реЗрдбрд░ ( gif_lib.h ) рдФрд░ рдПрдХ рд╕реНрдерд┐рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА ( libgif.a ) рдХреЗ рд░реВрдк рдореЗрдВ рдлреНрд░реЗрдорд╡рд░реНрдХ рд▓рдХреНрд╖реНрдп рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ C рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓рдХреНрд╖реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдЬреА рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╣рдорд╛рд░реЗ рд╕реНрдкрд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдХреБрдЫ рднреА рдЗрд╕ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рдЫрд┐рдкрд╛рдирд╛ рд╣реИред


  4. рдЕрдм рдЖрдк import GifSwift.CLibgif рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рдЕрдВрджрд░ рд╕реНрдкрд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рд╕реНрд╡рд┐рдлреНрдЯ рд░реИрдкрд░


рдЕрдм рдЖрдк рд╣рдорд╛рд░реЗ рдврд╛рдВрдЪреЗ рдХрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рд╡рд░реНрдЧ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЬреЛ рдЧреБрдгреЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЗ рд╕рд╛рде рдПрдХ gif рд╣реИ:

 import Foundation import GifSwift.CLibgif public class GifFile { private let path: URL private let fileHandlePtr: UnsafeMutablePointer<GifFileType> private var fileHandle: GifFileType { return self.fileHandlePtr.pointee } deinit { DGifCloseFile(self.fileHandlePtr, nil) } // MARK: - API public init?(path: URL) { self.path = path let errorCode = UnsafeMutablePointer<Int32>.allocate(capacity: 1) if let handle = path.path.withCString({ DGifOpenFileName($0, errorCode) }) { self.fileHandlePtr = handle DGifSlurp(handle) } else { debugPrint("Error opening file \(errorCode.pointee)") return nil } } public var size: CGSize { return CGSize(width: Double(fileHandle.SWidth), height: Double(fileHandle.SHeight)) } public var imagesCount: Int { return Int(fileHandle.ImageCount) } } 

GifFile.swift рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рдкреЗрдЯрддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдЧреБрдгреЛрдВ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдлрд╛рдЙрдВрдбреЗрд╢рди рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдирд┐рд░реАрдХреНрд╖рдг


рд╣рдорд╛рд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ cat.gif рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛:

 import UIKit import GifSwift class ViewController: UIViewController {   override func viewDidLoad() {       super.viewDidLoad()       if let file = GifFile(path: Bundle.main.url(forResource: "cat", withExtension: "gif")!) {           debugPrint("Image has size: \(file.size) and contains \(file.imagesCount) images")       }   } } 

рдЬрдм рд╣рдо рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЗрд╕ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦреЗрдВрдЧреЗ:

" рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░ рд╣реИ: (250.0, 208.0) рдФрд░ рдЗрд╕рдореЗрдВ 44 рдЪрд┐рддреНрд░ рд╣реИрдВ"

рдирд┐рд╖реНрдХрд░реНрд╖


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

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


All Articles