ਕਲਾਉਡਜ਼ ਨੂੰ ਹਮੇਸ਼ਾ ਲਈ ਕਿਵੇਂ ਬਣਾਇਆ ਜਾਵੇ: ਆਈਓਐਸ ਵਿੱਚ ਇੱਕ ਸਧਾਰਨ ਲੂਪਿੰਗ ਐਨੀਮੇਸ਼ਨ
ਆਈਓਐਸ ਵਿਕਾਸ ਵਿੱਚ, ਐਨੀਮੇਸ਼ਨ ਇੱਕ ਐਪ ਨੂੰ ਸੱਚਮੁੱਚ ਜੀਵਨ ਵਿੱਚ ਲਿਆ ਸਕਦੀ ਹੈ, ਇੱਕ ਗਤੀਸ਼ੀਲ ਅਤੇ ਆਕਰਸ਼ਕ ਤੱਤ ਸ਼ਾਮਲ ਕਰ ਸਕਦੀ ਹੈ ਜਿਸਨੂੰ ਉਪਭੋਗਤਾ ਪਸੰਦ ਕਰਦੇ ਹਨ। 🌥️ ਇੱਕ ਆਮ ਐਨੀਮੇਸ਼ਨ ਜੋ ਤੁਸੀਂ ਬਣਾਉਣਾ ਚਾਹ ਸਕਦੇ ਹੋ, ਇੱਕ ਨਿਰਵਿਘਨ, ਲੂਪਿੰਗ ਪ੍ਰਭਾਵ ਹੈ, ਜਿਵੇਂ ਕਿ ਸਕਰੀਨ ਉੱਤੇ ਬੱਦਲਾਂ ਨੂੰ ਹਿਲਾਉਣਾ। ਇਹ ਸਧਾਰਨ ਪਰ ਦ੍ਰਿਸ਼ਟੀਗਤ ਤੌਰ 'ਤੇ ਆਕਰਸ਼ਕ ਐਨੀਮੇਸ਼ਨ ਅਕਸਰ ਗੇਮਾਂ, ਮੌਸਮ ਐਪਾਂ, ਅਤੇ ਇੱਥੋਂ ਤੱਕ ਕਿ ਨਿੱਜੀ ਪ੍ਰੋਜੈਕਟਾਂ ਵਿੱਚ ਵੀ ਇੱਕ ਸ਼ਾਂਤ ਮਾਹੌਲ ਬਣਾਉਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ iOS ਵਿੱਚ ਐਨੀਮੇਸ਼ਨ ਲਈ ਨਵੇਂ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਸ਼ਾਇਦ ਸੋਚ ਰਹੇ ਹੋਵੋਗੇ ਕਿ ਇਸਨੂੰ ਸਹਿਜ ਕਿਵੇਂ ਬਣਾਇਆ ਜਾਵੇ ਅਤੇ ਗਲਤੀਆਂ ਤੋਂ ਬਚਿਆ ਜਾਵੇ।
ਇੱਕ ਐਪ ਖੋਲ੍ਹਣ ਦੀ ਕਲਪਨਾ ਕਰੋ ਅਤੇ ਤੁਰੰਤ ਬੱਦਲਾਂ ਨੂੰ ਸਕਰੀਨ ਉੱਤੇ ਹੌਲੀ-ਹੌਲੀ ਘੁੰਮਦੇ ਹੋਏ, ਸੰਪੂਰਣ ਸ਼ਾਂਤ ਬੈਕਗ੍ਰਾਊਂਡ ਬਣਾਉਂਦੇ ਹੋਏ ਦੇਖੋ। ਸਵਿਫਟ ਵਿੱਚ `UIImageView` ਅਤੇ `UIView` ਐਨੀਮੇਸ਼ਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਸ ਕਿਸਮ ਦਾ ਪ੍ਰਭਾਵ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਮੂਲ ਵਿਚਾਰ ਇੱਕੋ ਚਿੱਤਰ (ਇਸ ਕੇਸ ਵਿੱਚ ਬੱਦਲ) ਨੂੰ ਕਈ ਵਾਰ ਐਨੀਮੇਟ ਕਰਨਾ ਹੈ ਤਾਂ ਜੋ ਇਹ ਨਿਰੰਤਰ ਚਲਦਾ ਜਾਪਦਾ ਹੋਵੇ। ਹਾਲਾਂਕਿ, ਇਹ ਹਮੇਸ਼ਾ ਇੰਨਾ ਆਸਾਨ ਨਹੀਂ ਹੁੰਦਾ ਜਿੰਨਾ ਇਹ ਲੱਗਦਾ ਹੈ. ਐਨੀਮੇਸ਼ਨ ਨੂੰ ਨਿਰਵਿਘਨ ਬਣਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਸਮੇਂ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਅਕਸਰ ਕੁਝ ਕਮੀਆਂ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪੈਂਦਾ ਹੈ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਵਾਰ-ਵਾਰ ਚਿੱਤਰਾਂ ਨਾਲ ਨਜਿੱਠਣਾ ਹੁੰਦਾ ਹੈ।
ਜੇਕਰ ਤੁਸੀਂ ਇਸ ਪ੍ਰਭਾਵ ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਹੈ ਅਤੇ ਬੱਦਲਾਂ ਦੇ ਗਲਤ ਦਿਸ਼ਾ ਵੱਲ ਵਧਣ ਜਾਂ ਅਲੋਪ ਹੋ ਜਾਣ ਵਰਗੀਆਂ ਸਮੱਸਿਆਵਾਂ ਦਾ ਸਾਹਮਣਾ ਕੀਤਾ ਹੈ, ਤਾਂ ਤੁਸੀਂ ਇਕੱਲੇ ਨਹੀਂ ਹੋ। ਇਹ ਆਮ ਸਮੱਸਿਆਵਾਂ ਹਨ ਜੋ ਗਲਤ ਫਰੇਮ ਹੈਂਡਲਿੰਗ ਜਾਂ ਐਨੀਮੇਸ਼ਨ ਕੌਂਫਿਗਰੇਸ਼ਨ ਤੋਂ ਪੈਦਾ ਹੁੰਦੀਆਂ ਹਨ। ਪਰ ਚਿੰਤਾ ਨਾ ਕਰੋ-ਇਹ ਗਾਈਡ ਤੁਹਾਨੂੰ ਇਹਨਾਂ ਮੁੱਦਿਆਂ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਕਦਮਾਂ 'ਤੇ ਲੈ ਕੇ ਜਾਵੇਗੀ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਤੁਹਾਡੀ ਐਨੀਮੇਸ਼ਨ ਨਿਰਵਿਘਨ ਕੰਮ ਕਰਦੀ ਹੈ। ਜਿਵੇਂ ਕਿ ਬੱਦਲਾਂ ਨੂੰ ਐਨੀਮੇਟ ਕਰਨ ਦੀ ਮੇਰੀ ਪਹਿਲੀ ਕੋਸ਼ਿਸ਼ ਦੀ ਤਰ੍ਹਾਂ, ਤੁਹਾਨੂੰ ਸੰਪੂਰਨ ਨਤੀਜਾ ਪ੍ਰਾਪਤ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਕੁਝ ਚੀਜ਼ਾਂ ਨੂੰ ਅਨੁਕੂਲ ਕਰਨ ਦੀ ਲੋੜ ਹੋ ਸਕਦੀ ਹੈ। 😅
ਹੁਣ, ਆਉ ਉਹਨਾਂ ਬੱਦਲਾਂ ਨੂੰ ਇੱਕ ਸੰਪੂਰਨ ਲੂਪ ਵਿੱਚ ਜਾਣ ਲਈ ਹੱਲ ਵਿੱਚ ਡੁਬਕੀ ਮਾਰੀਏ। ਦੋ ਚਿੱਤਰ ਦ੍ਰਿਸ਼ਾਂ ਅਤੇ ਐਨੀਮੇਸ਼ਨ ਦੇ ਥੋੜੇ ਜਿਹੇ ਜਾਦੂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਤੁਸੀਂ ਇੱਕ ਬੇਅੰਤ, ਤਰਲ ਮੋਸ਼ਨ ਬਣਾਓਗੇ ਜੋ ਤੁਹਾਡੀ ਐਪ ਨੂੰ ਨਿਰਵਿਘਨ ਅਤੇ ਪਾਲਿਸ਼ੀ ਦਿਖਾਈ ਦੇਵੇਗੀ। ਐਨੀਮੇਸ਼ਨ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ ਤਿਆਰ ਹੋ ਅਤੇ ਉਹਨਾਂ ਬੱਦਲਾਂ ਨੂੰ ਸਹੀ ਤਰ੍ਹਾਂ ਵਹਿਣ ਲਈ ਤਿਆਰ ਹੋ? ਚਲਾਂ ਚਲਦੇ ਹਾਂ!
ਹੁਕਮ | ਵਰਤੋਂ ਦੀ ਉਦਾਹਰਨ |
---|---|
UIView.animate | ਇਹ ਕਮਾਂਡ ਇੱਕ ਖਾਸ ਅਵਧੀ 'ਤੇ ਦ੍ਰਿਸ਼ਾਂ ਨੂੰ ਐਨੀਮੇਟ ਕਰਨ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਸਥਿਤੀ ਵਿੱਚ, ਇਹ ਕਲਾਉਡ ਚਿੱਤਰਾਂ ਨੂੰ ਐਨੀਮੇਟ ਕਰਦਾ ਹੈ, ਲੂਪਿੰਗ ਪ੍ਰਭਾਵ ਬਣਾਉਂਦਾ ਹੈ। ਉਦਾਹਰਨ: UIView.animate(Duration: totalDuration, delay: 0.0, options: [.repeat, .curveLinear], ਐਨੀਮੇਸ਼ਨਾਂ: { ... }) |
frame.origin.x | ਫਰੇਮ ਵਿਸ਼ੇਸ਼ਤਾ ਇੱਕ ਦ੍ਰਿਸ਼ ਦੀ ਸਥਿਤੀ ਅਤੇ ਆਕਾਰ ਨੂੰ ਦਰਸਾਉਂਦੀ ਹੈ। origin.x ਖਾਸ ਤੌਰ 'ਤੇ ਹਰੀਜੱਟਲ ਸਥਿਤੀ ਨੂੰ ਸੈੱਟ ਕਰਦਾ ਹੈ। ਉਦਾਹਰਨ: ਚਿੱਤਰ ਨੂੰ ਖੱਬੇ ਪਾਸੇ ਲਿਜਾਣ ਲਈ cloudsImageView1.frame.origin.x -= self.screenSize। |
CGRect | CGRect ਢਾਂਚੇ ਦੀ ਵਰਤੋਂ 2D ਸਪੇਸ ਵਿੱਚ ਇੱਕ ਆਇਤਾਕਾਰ ਖੇਤਰ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਹ ਇੱਥੇ UIImageView ਦੀ ਸ਼ੁਰੂਆਤੀ ਸਥਿਤੀ ਅਤੇ ਆਕਾਰ ਨੂੰ ਸੈੱਟ ਕਰਨ ਲਈ ਵਰਤਿਆ ਗਿਆ ਹੈ। ਉਦਾਹਰਨ: cloudsImageView1.frame = CGRect(x: 0, y: 100, ਚੌੜਾਈ: ਸਕ੍ਰੀਨ ਆਕਾਰ, ਉਚਾਈ: 100) |
UIView.AnimationOptions | ਇਹ ਵਿਕਲਪ ਦੱਸਦਾ ਹੈ ਕਿ ਐਨੀਮੇਸ਼ਨ ਨੂੰ ਕਿਵੇਂ ਵਿਵਹਾਰ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। .repeat ਵਰਗੇ ਵਿਕਲਪ ਐਨੀਮੇਸ਼ਨ ਲੂਪ ਬਣਾਉਂਦੇ ਹਨ, ਅਤੇ .curveLinear ਸਪੀਡ ਕਰਵ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ। ਉਦਾਹਰਨ: UIView.animate(Duration: totalDuration, delay: 0.0, options: [.repeat, .curveLinear], ...) |
weak self | ਬੰਦ ਹੋਣ ਵਿੱਚ, ਕਮਜ਼ੋਰ ਸਵੈ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਣ ਵਾਲੇ ਚੱਕਰਾਂ ਨੂੰ ਰੋਕਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਮੈਮੋਰੀ ਲੀਕ ਹੋ ਸਕਦੀ ਹੈ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਦ੍ਰਿਸ਼ ਕੰਟਰੋਲਰ ਐਨੀਮੇਸ਼ਨ ਦੇ ਦੌਰਾਨ ਆਪਣੇ ਆਪ ਦਾ ਜ਼ੋਰਦਾਰ ਹਵਾਲਾ ਨਹੀਂ ਦਿੰਦਾ ਹੈ। ਉਦਾਹਰਨ: ਸੰਪੂਰਨਤਾ: { [ਕਮਜ਼ੋਰ ਸਵੈ] _ ਸਵੈ ਵਿੱਚ?.optimizeMemory() } |
recycleClouds() | ਇਹ ਕਸਟਮ ਫੰਕਸ਼ਨ ਚਿੱਤਰਾਂ ਦੀ ਸਥਿਤੀ ਨੂੰ ਰੀਸੈਟ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਜਦੋਂ ਉਹ ਸਕ੍ਰੀਨ ਦੀਆਂ ਸੀਮਾਵਾਂ ਤੋਂ ਬਾਹਰ ਚਲੇ ਜਾਂਦੇ ਹਨ, ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰਦੇ ਹੋਏ ਕਿ ਕਲਾਉਡ ਚਿੱਤਰਾਂ ਦੀ ਮੁੜ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਅਤੇ ਸਹਿਜੇ ਹੀ ਲੂਪ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਉਦਾਹਰਨ: self?.recycleClouds() |
UIImageView | UIImageView ਕਲਾਸ ਦੀ ਵਰਤੋਂ ਐਪ ਵਿੱਚ ਤਸਵੀਰਾਂ ਦਿਖਾਉਣ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਐਨੀਮੇਸ਼ਨ ਵਿੱਚ ਕਲਾਉਡ ਚਿੱਤਰ ਨੂੰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਨ ਲਈ ਇਹ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਉਦਾਹਰਨ: cloudsImageView1 = UIImageView(ਚਿੱਤਰ: cloudImage) |
UIScreen.main.bounds | ਇਹ ਕਮਾਂਡ ਡਿਵਾਈਸ ਦੀ ਸਕਰੀਨ ਦੇ ਮਾਪਾਂ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਹੈ, ਜੋ ਚਿੱਤਰਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਪੋਜੀਸ਼ਨ ਕਰਨ ਲਈ ਜ਼ਰੂਰੀ ਹੈ। ਉਦਾਹਰਨ: let screenSize = UIScreen.main.bounds.width |
totalDuration | ਇਹ ਵੇਰੀਏਬਲ ਐਨੀਮੇਸ਼ਨ ਦੀ ਮਿਆਦ ਨੂੰ ਕੰਟਰੋਲ ਕਰਦਾ ਹੈ। ਇਸ ਨੂੰ ਐਡਜਸਟ ਕਰਨਾ ਐਨੀਮੇਸ਼ਨ ਕਿੰਨੀ ਤੇਜ਼ ਜਾਂ ਹੌਲੀ ਚੱਲਦਾ ਹੈ ਇਹ ਬਦਲ ਸਕਦਾ ਹੈ। ਉਦਾਹਰਨ: ਕੁੱਲ ਮਿਆਦ = 20.0 ਕਰੀਏ |
ਆਈਓਐਸ ਵਿੱਚ ਕਲਾਉਡ ਐਨੀਮੇਸ਼ਨ ਸਕ੍ਰਿਪਟ ਕਿਵੇਂ ਕੰਮ ਕਰਦੀ ਹੈ
ਉੱਪਰ ਦਿੱਤੀ ਗਈ ਸਕ੍ਰਿਪਟ ਉਦਾਹਰਨ ਵਿੱਚ, ਟੀਚਾ ਇੱਕ ਨਿਰਵਿਘਨ, ਨਿਰੰਤਰ ਕਲਾਉਡ ਐਨੀਮੇਸ਼ਨ ਬਣਾਉਣਾ ਹੈ ਜੋ ਇੱਕ iOS ਐਪ ਵਿੱਚ ਅਨੰਤ ਰੂਪ ਵਿੱਚ ਲੂਪ ਕਰਦਾ ਹੈ। ਮੁੱਖ ਵਿਚਾਰ ਦੋ ਐਨੀਮੇਟ ਕਰਨਾ ਹੈ UIImageView ਉਸੇ ਕਲਾਉਡ ਚਿੱਤਰ ਦੇ ਨਾਲ ਉਦਾਹਰਨਾਂ, ਉਹਨਾਂ ਨੂੰ ਸਕਰੀਨ ਵਿੱਚ ਖਿਤਿਜੀ ਰੂਪ ਵਿੱਚ ਹਿਲਾ ਕੇ। ਇਹ ਫਰੇਮ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਉਹਨਾਂ ਦੀਆਂ ਸਥਿਤੀਆਂ ਨੂੰ ਅਨੁਕੂਲ ਕਰਕੇ ਕੀਤਾ ਜਾਂਦਾ ਹੈ origin.x ਜਾਇਦਾਦ ਅਤੇ ਇਹਨਾਂ ਅਹੁਦਿਆਂ 'ਤੇ ਐਨੀਮੇਸ਼ਨ ਲਾਗੂ ਕਰਨਾ। ਦੋ ਚਿੱਤਰ ਦ੍ਰਿਸ਼ਾਂ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਤਾਂ ਜੋ ਜਦੋਂ ਇੱਕ ਸਕ੍ਰੀਨ ਤੋਂ ਬਾਹਰ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਦੂਜਾ ਇਸਦੀ ਜਗ੍ਹਾ ਲੈਣ ਲਈ ਤਿਆਰ ਹੁੰਦਾ ਹੈ, ਇੱਕ ਸਹਿਜ ਲੂਪ ਦਾ ਪ੍ਰਭਾਵ ਬਣਾਉਂਦਾ ਹੈ। ਚਿੱਤਰ ਦ੍ਰਿਸ਼ਾਂ ਦੀ ਗਤੀ ਨੂੰ ਐਨੀਮੇਟ ਕਰਕੇ, ਤੁਸੀਂ ਇਹ ਭੁਲੇਖਾ ਦੇ ਸਕਦੇ ਹੋ ਕਿ ਬੱਦਲ ਲਗਾਤਾਰ ਅਸਮਾਨ ਵਿੱਚ ਵਹਿ ਰਹੇ ਹਨ। 🚀
ਆਉ ਕੋਡ ਦੇ ਮੁੱਖ ਭਾਗਾਂ ਨੂੰ ਤੋੜੀਏ। ਪਹਿਲਾ ਕਦਮ ਦੋ ਚਿੱਤਰ ਦ੍ਰਿਸ਼ ਬਣਾਉਣਾ ਹੈ, ਹਰੇਕ ਵਿੱਚ ਬੱਦਲਾਂ ਦੀ ਇੱਕੋ ਜਿਹੀ ਤਸਵੀਰ ਹੈ। ਇਹ ਚਿੱਤਰ ਦ੍ਰਿਸ਼ ਸਕਰੀਨ 'ਤੇ ਨਾਲ-ਨਾਲ ਰੱਖੇ ਗਏ ਹਨ, ਦੂਜਾ ਚਿੱਤਰ ਦ੍ਰਿਸ਼ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ ਜਿੱਥੇ ਪਹਿਲਾ ਖਤਮ ਹੁੰਦਾ ਹੈ, ਇੱਕ ਨਿਰੰਤਰ ਰੁਖ ਬਣਾਉਂਦਾ ਹੈ। ਇਹ ਸੈੱਟਅੱਪ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ ਜਦੋਂ ਪਹਿਲਾ ਚਿੱਤਰ ਦ੍ਰਿਸ਼ ਸਕ੍ਰੀਨ ਦੇ ਕਿਨਾਰੇ 'ਤੇ ਪਹੁੰਚਦਾ ਹੈ, ਤਾਂ ਦੂਜਾ ਚਿੱਤਰ ਦ੍ਰਿਸ਼ ਲੈਣ ਲਈ ਤਿਆਰ ਹੈ। ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਚਿੱਤਰ ਦ੍ਰਿਸ਼ਾਂ ਦੀਆਂ ਸਥਿਤੀਆਂ ਨੂੰ ਨਿਯੰਤਰਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਫਰੇਮ ਵਿਸ਼ੇਸ਼ਤਾ, ਜੋ ਕਿ ਮੂਲ ਦ੍ਰਿਸ਼ ਦੇ ਅੰਦਰ ਦ੍ਰਿਸ਼ਾਂ ਦੇ ਆਕਾਰ ਅਤੇ ਸਥਿਤੀ ਦੋਵਾਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦੀ ਹੈ। ਹਰੇਕ ਚਿੱਤਰ ਦ੍ਰਿਸ਼ ਇੱਕ ਵੱਖਰੀ x-ਸਥਿਤੀ ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ: ਇੱਕ 0 ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਦੂਜਾ ਸਕ੍ਰੀਨ ਦੀ ਚੌੜਾਈ ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ।
ਇੱਕ ਵਾਰ ਚਿੱਤਰ ਦ੍ਰਿਸ਼ਾਂ ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਅਗਲਾ ਕਦਮ ਉਹਨਾਂ ਨੂੰ ਐਨੀਮੇਟ ਕਰਨਾ ਹੈ। ਨਾਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ UIView.animate ਫੰਕਸ਼ਨ, ਜੋ ਸਮੇਂ ਦੇ ਨਾਲ ਵਿਚਾਰਾਂ ਨੂੰ ਐਨੀਮੇਟ ਕਰਨ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਹੈ। ਦ UIView.animate ਫੰਕਸ਼ਨ ਕਈ ਪੈਰਾਮੀਟਰ ਲੈਂਦਾ ਹੈ: ਐਨੀਮੇਸ਼ਨ ਦੀ ਮਿਆਦ, ਐਨੀਮੇਸ਼ਨ ਸ਼ੁਰੂ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਕੋਈ ਦੇਰੀ, ਐਨੀਮੇਸ਼ਨ ਵਿਕਲਪ (ਜਿਵੇਂ ਕਿ ਐਨੀਮੇਸ਼ਨ ਨੂੰ ਦੁਹਰਾਉਣਾ), ਅਤੇ ਲਾਗੂ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਐਨੀਮੇਸ਼ਨਾਂ ਦਾ ਬਲਾਕ। ਇਸ ਸਥਿਤੀ ਵਿੱਚ, ਐਨੀਮੇਸ਼ਨ ਦੀ ਮਿਆਦ 20 ਸਕਿੰਟ 'ਤੇ ਸੈੱਟ ਕੀਤੀ ਗਈ ਹੈ, ਅਤੇ ਐਨੀਮੇਸ਼ਨ ਨੂੰ ਹਮੇਸ਼ਾ ਲਈ ਦੁਹਰਾਉਣ ਲਈ ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਹੈ .ਦੁਹਰਾਓ ਵਿਕਲਪ। ਦ .ਕਰਵਲੀਨੀਅਰ ਵਿਕਲਪ ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰਦਾ ਹੈ ਕਿ ਐਨੀਮੇਸ਼ਨ ਇੱਕ ਨਿਰੰਤਰ ਗਤੀ ਨਾਲ ਚੱਲਦੀ ਹੈ, ਇੱਕ ਨਿਰਵਿਘਨ, ਰੇਖਿਕ ਅੰਦੋਲਨ ਬਣਾਉਂਦੀ ਹੈ। ਚਿੱਤਰਾਂ ਨੂੰ ਉਹਨਾਂ ਦੇ ਔਫਸੈੱਟ ਕਰਕੇ ਖਿਤਿਜੀ ਤੌਰ 'ਤੇ ਮੂਵ ਕੀਤਾ ਜਾਂਦਾ ਹੈ origin.x ਸਕਰੀਨ ਦੀ ਚੌੜਾਈ ਦੁਆਰਾ.
ਹਾਲਾਂਕਿ, ਕੋਡ ਅਣਚਾਹੇ ਨਤੀਜੇ ਪੈਦਾ ਕਰ ਸਕਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਚਿੱਤਰ ਗਾਇਬ ਹੋ ਜਾਣਾ ਜਾਂ ਗਲਤ ਦਿਸ਼ਾ ਵੱਲ ਵਧਣਾ। ਇਹ ਇਸ ਲਈ ਹੈ ਕਿਉਂਕਿ ਦ ਫਰੇਮ ਜਦੋਂ ਉਹ ਆਫ-ਸਕ੍ਰੀਨ ਚਲੇ ਜਾਂਦੇ ਹਨ ਤਾਂ ਚਿੱਤਰਾਂ ਨੂੰ ਰੀਸੈਟ ਕੀਤੇ ਬਿਨਾਂ ਸੰਪੱਤੀ ਨੂੰ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਸੋਧਿਆ ਜਾ ਰਿਹਾ ਹੈ। ਇਸ ਦਾ ਹੱਲ ਇੱਕ ਢੰਗ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਹੈ ਰੀਸਾਈਕਲ ਕਲਾਉਡ, ਜੋ ਕਿ ਚਿੱਤਰ ਦ੍ਰਿਸ਼ਾਂ ਦੀ ਸਥਿਤੀ ਨੂੰ ਰੀਸੈਟ ਕਰਦਾ ਹੈ ਜਦੋਂ ਉਹ ਸਕ੍ਰੀਨ ਦੀਆਂ ਸੀਮਾਵਾਂ ਤੋਂ ਅੱਗੇ ਵਧਦੇ ਹਨ। ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰਦਾ ਹੈ ਕਿ ਚਿੱਤਰਾਂ ਨੂੰ ਗਾਇਬ ਕੀਤੇ ਬਿਨਾਂ, ਸਹਿਜੇ ਹੀ ਲੂਪ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਵਿਧੀ ਚਿੱਤਰ ਦ੍ਰਿਸ਼ਾਂ ਦੀ x-ਸਥਿਤੀ ਦੀ ਜਾਂਚ ਕਰਦੀ ਹੈ, ਅਤੇ ਜਦੋਂ ਕੋਈ ਆਫ-ਸਕ੍ਰੀਨ ਚਲਦਾ ਹੈ, ਤਾਂ ਇਸਨੂੰ ਦੂਜੇ ਪਾਸੇ ਰੀਸੈਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਲੂਪ ਨੂੰ ਜਾਰੀ ਰੱਖਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਵਰਤ ਕੇ ਕਮਜ਼ੋਰ ਸਵੈ ਕੰਪਲੀਸ਼ਨ ਬਲਾਕ ਦੇ ਅੰਦਰ ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰਦਾ ਹੈ ਕਿ ਐਪ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਵਿੱਚ ਸੁਧਾਰ ਕਰਦੇ ਹੋਏ, ਮਜ਼ਬੂਤ ਸੰਦਰਭ ਚੱਕਰਾਂ ਦੇ ਕਾਰਨ ਕੋਈ ਮੈਮੋਰੀ ਲੀਕ ਨਹੀਂ ਹੈ।
UIImageView ਦੇ ਨਾਲ iOS ਵਿੱਚ ਇੱਕ ਲੂਪਿੰਗ ਕਲਾਉਡ ਐਨੀਮੇਸ਼ਨ ਬਣਾਉਣਾ
ਇਹ ਹੱਲ ਇੱਕ ਸਹਿਜ ਕਲਾਉਡ ਐਨੀਮੇਸ਼ਨ ਲੂਪ ਬਣਾਉਣ ਲਈ ਦੋ UIImageView ਵਸਤੂਆਂ ਨੂੰ ਐਨੀਮੇਟ ਕਰਨ ਲਈ UIKit ਫਰੇਮਵਰਕ ਦੇ ਨਾਲ ਸਵਿਫਟ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।
import UIKit
class ViewController: UIViewController {
var cloudsImageView1: UIImageView!
var cloudsImageView2: UIImageView!
let screenSize = UIScreen.main.bounds.width
let cloudImage = UIImage(named: "cloud.png")
override func viewDidLoad() {
super.viewDidLoad()
setupClouds()
animateClouds()
}
func setupClouds() {
cloudsImageView1 = UIImageView(image: cloudImage)
cloudsImageView2 = UIImageView(image: cloudImage)
cloudsImageView1.frame = CGRect(x: 0, y: 100, width: screenSize, height: 100)
cloudsImageView2.frame = CGRect(x: screenSize, y: 100, width: screenSize, height: 100)
view.addSubview(cloudsImageView1)
view.addSubview(cloudsImageView2)
}
func animateClouds() {
UIView.animate(withDuration: 20.0, delay: 0.0, options: [.repeat, .curveLinear], animations: {
self.cloudsImageView1.frame.origin.x -= self.screenSize
self.cloudsImageView2.frame.origin.x -= self.screenSize
}, completion: nil)
}
}
ਸੁਧਾਰੀ ਚਿੱਤਰ ਰੀਸਾਈਕਲਿੰਗ ਅਤੇ ਦਿਸ਼ਾ ਹੈਂਡਲਿੰਗ ਦੇ ਨਾਲ ਕਲਾਉਡ ਐਨੀਮੇਸ਼ਨ ਨੂੰ ਫਿਕਸ ਕਰਨਾ
ਇਹ ਵਿਧੀ ਕਲਾਉਡ ਚਿੱਤਰ ਲੂਪਿੰਗ ਨੂੰ ਵਧੇਰੇ ਵਧੀਆ ਪਹੁੰਚ ਨਾਲ ਸੰਭਾਲਣ ਲਈ ਸਵਿਫਟ ਅਤੇ UIKit ਦੀ ਵਰਤੋਂ ਕਰਦੀ ਹੈ, ਚਿੱਤਰ ਦ੍ਰਿਸ਼ ਰੀਸਾਈਕਲਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਚਿੱਤਰਾਂ ਨੂੰ ਅਲੋਪ ਹੋਣ ਤੋਂ ਰੋਕਣ ਅਤੇ ਇੱਕ ਨਿਰਵਿਘਨ ਨਿਰੰਤਰ ਐਨੀਮੇਸ਼ਨ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ।
import UIKit
class ViewController: UIViewController {
var cloudsImageView1: UIImageView!
var cloudsImageView2: UIImageView!
let screenSize = UIScreen.main.bounds.width
let cloudImage = UIImage(named: "cloud.png")
override func viewDidLoad() {
super.viewDidLoad()
setupClouds()
animateClouds()
}
func setupClouds() {
cloudsImageView1 = UIImageView(image: cloudImage)
cloudsImageView2 = UIImageView(image: cloudImage)
cloudsImageView1.frame = CGRect(x: 0, y: 100, width: screenSize, height: 100)
cloudsImageView2.frame = CGRect(x: screenSize, y: 100, width: screenSize, height: 100)
view.addSubview(cloudsImageView1)
view.addSubview(cloudsImageView2)
}
func animateClouds() {
let totalDuration = 20.0
let animationOptions: UIView.AnimationOptions = [.repeat, .curveLinear]
UIView.animate(withDuration: totalDuration, delay: 0.0, options: animationOptions, animations: {
self.cloudsImageView1.frame.origin.x -= self.screenSize
self.cloudsImageView2.frame.origin.x -= self.screenSize
}) { [weak self] _ in
self?.recycleClouds()
}
}
func recycleClouds() {
if cloudsImageView1.frame.origin.x <= -screenSize {
cloudsImageView1.frame.origin.x = screenSize
}
if cloudsImageView2.frame.origin.x <= -screenSize {
cloudsImageView2.frame.origin.x = screenSize
}
}
}
ਕੁਸ਼ਲ ਮੈਮੋਰੀ ਵਰਤੋਂ ਦੇ ਨਾਲ ਅਨੁਕੂਲਿਤ ਕਲਾਉਡ ਐਨੀਮੇਸ਼ਨ
ਇਹ ਹੱਲ ਮੈਮੋਰੀ ਓਪਟੀਮਾਈਜੇਸ਼ਨ ਤਕਨੀਕਾਂ ਦੇ ਨਾਲ ਇੱਕ ਵਧੇਰੇ ਕੁਸ਼ਲ ਐਨੀਮੇਸ਼ਨ ਰਣਨੀਤੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪਿਛਲੀ ਉਦਾਹਰਨ ਨੂੰ ਸੁਧਾਰਦਾ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਗੁੰਝਲਦਾਰ ਜਾਂ ਵੱਡੇ ਪੈਮਾਨੇ ਵਾਲੇ ਐਪਸ ਲਈ ਮਦਦਗਾਰ।
import UIKit
class ViewController: UIViewController {
var cloudsImageView1: UIImageView!
var cloudsImageView2: UIImageView!
let screenSize = UIScreen.main.bounds.width
let cloudImage = UIImage(named: "cloud.png")
var totalDuration = 20.0
override func viewDidLoad() {
super.viewDidLoad()
setupClouds()
animateClouds()
}
func setupClouds() {
cloudsImageView1 = UIImageView(image: cloudImage)
cloudsImageView2 = UIImageView(image: cloudImage)
cloudsImageView1.frame = CGRect(x: 0, y: 100, width: screenSize, height: 100)
cloudsImageView2.frame = CGRect(x: screenSize, y: 100, width: screenSize, height: 100)
view.addSubview(cloudsImageView1)
view.addSubview(cloudsImageView2)
}
func animateClouds() {
UIView.animate(withDuration: totalDuration, delay: 0.0, options: [.repeat, .curveLinear], animations: {
self.cloudsImageView1.frame.origin.x -= self.screenSize
self.cloudsImageView2.frame.origin.x -= self.screenSize
}, completion: { [weak self] _ in
self?.optimizeMemory()
})
}
func optimizeMemory() {
if cloudsImageView1.frame.origin.x <= -screenSize {
cloudsImageView1.frame.origin.x = screenSize
}
if cloudsImageView2.frame.origin.x <= -screenSize {
cloudsImageView2.frame.origin.x = screenSize
}
}
}
ਆਈਓਐਸ ਵਿੱਚ ਸਹਿਜ ਕਲਾਉਡ ਐਨੀਮੇਸ਼ਨ ਬਣਾਉਣਾ
ਇੱਕ ਲੂਪਿੰਗ ਚਿੱਤਰ ਨੂੰ ਐਨੀਮੇਟ ਕਰਨ ਲਈ, ਜਿਵੇਂ ਕਿ ਇੱਕ iOS ਐਪ ਵਿੱਚ ਕਲਾਉਡ ਡ੍ਰਾਈਫਟ, ਵਿਜ਼ੂਅਲ ਪ੍ਰਭਾਵਾਂ ਅਤੇ ਪ੍ਰਦਰਸ਼ਨ ਦੋਵਾਂ 'ਤੇ ਧਿਆਨ ਨਾਲ ਵਿਚਾਰ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਜਦੋਂ ਤੁਸੀਂ ਸਕਰੀਨ 'ਤੇ ਘੁੰਮਦੇ ਬੱਦਲਾਂ ਦੇ ਇੱਕ ਬੇਅੰਤ ਲੂਪ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਹੇ ਹੋ, ਤਾਂ ਸੰਬੋਧਿਤ ਕਰਨ ਲਈ ਕੁਝ ਮੁੱਖ ਤੱਤ ਹਨ: ਸਮਾਂ, ਦਿਸ਼ਾ, ਅਤੇ ਦ੍ਰਿਸ਼ਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਿਵੇਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਤੁਹਾਡੇ ਐਨੀਮੇਸ਼ਨ ਨੂੰ ਨਿਰਵਿਘਨ ਬਣਾਉਣ ਲਈ ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਕਾਰਕਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ ਚਿੱਤਰ ਦ੍ਰਿਸ਼ਾਂ ਨੂੰ ਕੁਸ਼ਲਤਾ ਨਾਲ ਸੰਭਾਲਣਾ ਤਾਂ ਜੋ ਉਹ ਸਿਰਫ਼ ਅਲੋਪ ਹੀ ਨਾ ਹੋਣ ਜਾਂ ਫਸ ਨਾ ਜਾਣ। ਦੋ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ UIImageView ਐਨੀਮੇਸ਼ਨ ਦੀਆਂ ਉਦਾਹਰਣਾਂ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਦੀਆਂ ਹਨ ਕਿ ਬੱਦਲ ਲਗਾਤਾਰ ਹਿੱਲਦੇ ਦਿਖਾਈ ਦਿੰਦੇ ਹਨ, ਭਾਵੇਂ ਇੱਕ ਚਿੱਤਰ ਸਕ੍ਰੀਨ ਤੋਂ ਬਾਹਰ ਚਲਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਦੂਜਾ ਉਸਦੀ ਜਗ੍ਹਾ ਲੈ ਲੈਂਦਾ ਹੈ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਜਦੋਂ ਚਿੱਤਰ ਸਕ੍ਰੀਨ ਦੇ ਕਿਨਾਰੇ ਤੋਂ ਅੱਗੇ ਚਲੇ ਜਾਂਦੇ ਹਨ ਤਾਂ ਉਹਨਾਂ ਨੂੰ ਰੀਸੈਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਸ ਰੀਸੈਟ ਤੋਂ ਬਿਨਾਂ, ਐਨੀਮੇਸ਼ਨ ਟੁੱਟ ਸਕਦੀ ਹੈ, ਜਿਸ ਨਾਲ ਬੱਦਲ ਗਾਇਬ ਹੋ ਸਕਦੇ ਹਨ ਜਾਂ ਲੂਪ ਵਿੱਚ ਅੰਤਰ ਛੱਡ ਸਕਦੇ ਹਨ।
ਐਨੀਮੇਸ਼ਨ ਦੇ ਇੱਕ ਹੋਰ ਨਾਜ਼ੁਕ ਪਹਿਲੂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੈ frame.origin.x ਵਿਸ਼ੇਸ਼ਤਾ, ਜੋ ਕਿ ਕਲਾਉਡ ਚਿੱਤਰਾਂ ਦੀ ਸਥਿਤੀ ਨੂੰ ਨਿਯੰਤਰਿਤ ਕਰਨ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਹੈ। ਵੱਖ-ਵੱਖ ਸ਼ੁਰੂਆਤੀ ਬਿੰਦੂਆਂ 'ਤੇ ਚਿੱਤਰਾਂ ਦੀ ਹਰੀਜੱਟਲ ਸਥਿਤੀ ਨੂੰ ਸੈਟ ਕਰਕੇ, ਤੁਸੀਂ ਅਨੰਤ ਅੰਦੋਲਨ ਦਾ ਭਰਮ ਬਣਾ ਸਕਦੇ ਹੋ। ਹਾਲਾਂਕਿ, ਇੱਕ ਆਮ ਸਮੱਸਿਆ ਉਦੋਂ ਪੈਦਾ ਹੁੰਦੀ ਹੈ ਜਦੋਂ ਇੱਕ ਚਿੱਤਰ ਆਫ-ਸਕ੍ਰੀਨ ਚਲਦਾ ਹੈ ਅਤੇ ਸਹੀ ਸਥਿਤੀ 'ਤੇ ਰੀਸੈਟ ਨਹੀਂ ਹੁੰਦਾ ਹੈ। ਸਹੀ ਪਹੁੰਚ ਇਹ ਪਤਾ ਲਗਾਉਣਾ ਹੈ ਕਿ ਚਿੱਤਰ ਕਦੋਂ ਸਕ੍ਰੀਨ ਦੇ ਕਿਨਾਰੇ ਤੋਂ ਲੰਘ ਗਿਆ ਹੈ, ਫਿਰ ਇਸਨੂੰ ਦੂਜੇ ਪਾਸੇ ਤੋਂ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਮੁੜ-ਸਥਾਪਿਤ ਕਰੋ। ਇੱਕ ਐਨੀਮੇਸ਼ਨ ਬਲਾਕ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ, ਤੁਸੀਂ ਇੱਕ ਦੁਹਰਾਉਣ ਵਾਲੇ ਅਤੇ ਨਿਰੰਤਰ ਐਨੀਮੇਸ਼ਨ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰ ਸਕਦੇ ਹੋ ਜੋ ਇੱਕ ਨਿਰੰਤਰ ਪ੍ਰਵਾਹ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਅੰਦੋਲਨ ਨਿਰਵਿਘਨ ਹੈ, ਦੀ ਵਰਤੋਂ ਕਰੋ UIView.animate ਵਰਗੇ ਵਿਕਲਪਾਂ ਨਾਲ ਵਿਧੀ .ਦੁਹਰਾਓ ਲੂਪਿੰਗ ਲਈ ਅਤੇ .ਕਰਵਲੀਨੀਅਰ ਵੀ ਗਤੀ ਲਈ.
ਅੰਤ ਵਿੱਚ, ਪ੍ਰਦਰਸ਼ਨ ਅਤੇ ਨਿਰਵਿਘਨਤਾ ਲਈ ਤੁਹਾਡੇ ਕੋਡ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਣਾ ਵਿਜ਼ੂਅਲ ਪ੍ਰਭਾਵ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਜਿੰਨਾ ਹੀ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਤੁਹਾਨੂੰ ਐਨੀਮੇਸ਼ਨ ਦੌਰਾਨ ਮੈਮੋਰੀ ਦੀ ਵਰਤੋਂ ਨੂੰ ਘੱਟ ਤੋਂ ਘੱਟ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਬੇਲੋੜੀਆਂ ਗਣਨਾਵਾਂ ਤੋਂ ਬਚਣਾ ਚਾਹੀਦਾ ਹੈ। ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ weak self ਕਲੋਜ਼ਰ-ਅਧਾਰਿਤ ਐਨੀਮੇਸ਼ਨਾਂ ਵਿੱਚ ਹਵਾਲੇ ਬਰਕਰਾਰ ਰੱਖਣ ਵਾਲੇ ਚੱਕਰਾਂ ਤੋਂ ਬਚ ਕੇ ਮੈਮੋਰੀ ਲੀਕ ਨੂੰ ਰੋਕਣ ਵਿੱਚ ਮਦਦ ਕਰਦੇ ਹਨ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਜੇ ਐਨੀਮੇਸ਼ਨ ਗੁੰਝਲਦਾਰ ਹੈ ਜਾਂ ਜੇ ਤੁਹਾਨੂੰ ਹੋਰ ਤਕਨੀਕੀ ਤਕਨੀਕਾਂ ਦੀ ਲੋੜ ਹੈ, ਤਾਂ ਵਰਤਣ ਬਾਰੇ ਵਿਚਾਰ ਕਰੋ CADisplayLink ਰੀਅਲ-ਟਾਈਮ ਫ੍ਰੇਮ ਅੱਪਡੇਟ ਲਈ, ਜੋ ਐਨੀਮੇਸ਼ਨ ਦੇ ਸਮੇਂ ਅਤੇ ਨਿਰਵਿਘਨਤਾ 'ਤੇ ਵਧੇਰੇ ਨਿਯੰਤਰਣ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰਦਾ ਹੈ। ਵੱਖ-ਵੱਖ ਸਕ੍ਰੀਨ ਆਕਾਰਾਂ ਅਤੇ ਦਿਸ਼ਾ-ਨਿਰਦੇਸ਼ਾਂ 'ਤੇ ਐਨੀਮੇਸ਼ਨ ਦੀ ਜਾਂਚ ਕਰਨਾ ਵੀ ਮਹੱਤਵਪੂਰਨ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ ਕਿ ਐਨੀਮੇਸ਼ਨ ਸਾਰੀਆਂ ਡਿਵਾਈਸਾਂ ਵਿੱਚ ਉਮੀਦ ਅਨੁਸਾਰ ਕੰਮ ਕਰਦੀ ਹੈ। 📱
ਆਮ ਸਵਾਲ ਅਤੇ ਜਵਾਬ
- ਮੈਂ ਕਿਵੇਂ ਯਕੀਨੀ ਬਣਾਵਾਂ ਕਿ ਕਲਾਉਡ ਐਨੀਮੇਸ਼ਨ ਸਹੀ ਢੰਗ ਨਾਲ ਲੂਪ ਹੋਵੇ?
- ਕਲਾਉਡ ਐਨੀਮੇਸ਼ਨ ਲੂਪ ਬਣਾਉਣ ਲਈ, ਤੁਹਾਨੂੰ ਵਰਤਣਾ ਚਾਹੀਦਾ ਹੈ UIView.animate ਦੇ ਨਾਲ .repeat ਵਿਕਲਪ। ਇਹ ਯਕੀਨੀ ਬਣਾਵੇਗਾ ਕਿ ਐਨੀਮੇਸ਼ਨ ਅਣਮਿੱਥੇ ਸਮੇਂ ਲਈ ਦੁਹਰਾਈ ਜਾਵੇਗੀ। ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰੋ ਕਿ ਕਿਸੇ ਵੀ ਅੰਤਰ ਨੂੰ ਰੋਕਣ ਲਈ ਪਹਿਲੇ ਚਿੱਤਰ ਨੂੰ ਆਫ-ਸਕ੍ਰੀਨ ਤੋਂ ਚਲੇ ਜਾਣ ਤੋਂ ਬਾਅਦ ਦੂਜਾ ਚਿੱਤਰ ਦ੍ਰਿਸ਼ ਮੁੜ-ਸਥਾਨਿਤ ਕੀਤਾ ਗਿਆ ਹੈ।
- ਐਨੀਮੇਸ਼ਨ ਦੌਰਾਨ ਮੇਰੇ ਕਲਾਉਡ ਚਿੱਤਰ ਅਲੋਪ ਕਿਉਂ ਹੋ ਜਾਂਦੇ ਹਨ?
- ਸਮੱਸਿਆ ਅਕਸਰ ਉਦੋਂ ਪੈਦਾ ਹੁੰਦੀ ਹੈ ਜਦੋਂ ਚਿੱਤਰਾਂ ਨੂੰ ਸਕ੍ਰੀਨ ਤੋਂ ਬਾਹਰ ਜਾਣ ਤੋਂ ਬਾਅਦ ਉਹਨਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਰੀਸੈਟ ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਤੁਹਾਨੂੰ ਚਿੱਤਰ ਦ੍ਰਿਸ਼ਾਂ ਨੂੰ ਸਕ੍ਰੀਨ ਦੇ ਦੂਜੇ ਪਾਸੇ ਬਦਲਣ ਦੀ ਲੋੜ ਹੈ ਜਦੋਂ ਉਹ ਕਿਨਾਰੇ ਤੋਂ ਲੰਘਦੇ ਹਨ, ਵਰਤਦੇ ਹੋਏ frame.origin.x.
- ਕਲਾਉਡ ਐਨੀਮੇਸ਼ਨ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਣ ਦਾ ਸਭ ਤੋਂ ਵਧੀਆ ਤਰੀਕਾ ਕੀ ਹੈ?
- ਕਲਾਉਡ ਐਨੀਮੇਸ਼ਨ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਣ ਲਈ, ਵਰਤੋਂ weak self ਮੈਮੋਰੀ ਲੀਕ ਤੋਂ ਬਚਣ ਲਈ ਬੰਦ ਵਿੱਚ. ਇਸ ਤੋਂ ਇਲਾਵਾ, ਇਹ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਐਨੀਮੇਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਨਿਰਵਿਘਨ ਹੈ UIView.animate ਨਾਲ .curveLinear ਵੀ ਗਤੀ ਲਈ ਅਤੇ .repeat ਲਗਾਤਾਰ ਐਨੀਮੇਸ਼ਨ ਲਈ.
- ਮੈਂ ਇਹ ਕਿਵੇਂ ਯਕੀਨੀ ਬਣਾਵਾਂ ਕਿ ਕਲਾਉਡ ਚਿੱਤਰ ਸਿੰਕ ਵਿੱਚ ਰਹਿਣ?
- ਦੋ ਚਿੱਤਰ ਦ੍ਰਿਸ਼ਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਤੇ ਇੱਕੋ ਗਤੀ ਅਤੇ ਅਵਧੀ ਦੇ ਨਾਲ ਇੱਕੋ ਸਮੇਂ ਦੋਵਾਂ ਨੂੰ ਐਨੀਮੇਟ ਕਰਕੇ, ਤੁਸੀਂ ਉਹਨਾਂ ਨੂੰ ਸਿੰਕ ਵਿੱਚ ਰੱਖ ਸਕਦੇ ਹੋ। ਦੀ ਵਰਤੋਂ ਵੀ ਕਰ ਸਕਦੇ ਹੋ offsetBy ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਦੋਵੇਂ ਚਿੱਤਰ ਇੱਕੋ ਦਿਸ਼ਾ ਅਤੇ ਗਤੀ ਵਿੱਚ ਚਲੇ ਜਾਂਦੇ ਹਨ।
- ਕੀ ਮੈਂ ਕਲਾਉਡ ਅੰਦੋਲਨ ਦੀ ਗਤੀ ਨੂੰ ਨਿਯੰਤਰਿਤ ਕਰ ਸਕਦਾ ਹਾਂ?
- ਹਾਂ, ਤੁਸੀਂ ਐਡਜਸਟ ਕਰਕੇ ਕਲਾਉਡ ਅੰਦੋਲਨ ਦੀ ਗਤੀ ਨੂੰ ਨਿਯੰਤਰਿਤ ਕਰ ਸਕਦੇ ਹੋ duration ਵਿੱਚ ਪੈਰਾਮੀਟਰ UIView.animate ਢੰਗ. ਇੱਕ ਲੰਮੀ ਅਵਧੀ ਦੇ ਨਤੀਜੇ ਵਜੋਂ ਹੌਲੀ ਗਤੀ ਹੁੰਦੀ ਹੈ, ਜਦੋਂ ਕਿ ਇੱਕ ਛੋਟਾ ਸਮਾਂ ਗਤੀ ਵਧਾਉਂਦਾ ਹੈ।
- ਜੇਕਰ ਮੈਂ ਯੂਜ਼ਰ ਇਨਪੁਟ ਦੇ ਆਧਾਰ 'ਤੇ ਕਲਾਊਡ ਐਨੀਮੇਸ਼ਨ ਨੂੰ ਤੇਜ਼ ਜਾਂ ਹੌਲੀ ਚਲਾਉਣਾ ਚਾਹੁੰਦਾ ਹਾਂ ਤਾਂ ਕੀ ਹੋਵੇਗਾ?
- ਯੂਜ਼ਰ ਇਨਪੁਟ ਦੇ ਆਧਾਰ 'ਤੇ ਐਨੀਮੇਸ਼ਨ ਨੂੰ ਡਾਇਨਾਮਿਕ ਬਣਾਉਣ ਲਈ, ਤੁਸੀਂ ਬਾਈਂਡ ਕਰ ਸਕਦੇ ਹੋ duration ਇੱਕ ਵੇਰੀਏਬਲ ਲਈ ਐਨੀਮੇਸ਼ਨ ਜੋ ਬਦਲਦਾ ਹੈ ਜਦੋਂ ਉਪਭੋਗਤਾ ਐਪ ਨਾਲ ਇੰਟਰੈਕਟ ਕਰਦਾ ਹੈ। ਇਹ ਤੁਹਾਨੂੰ ਅਸਲ-ਸਮੇਂ ਵਿੱਚ ਗਤੀ ਨੂੰ ਅਨੁਕੂਲ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ.
- ਮੈਂ ਕਲਾਉਡ ਐਨੀਮੇਸ਼ਨ ਨੂੰ ਵੱਖ-ਵੱਖ ਸਕ੍ਰੀਨ ਆਕਾਰਾਂ 'ਤੇ ਕਿਵੇਂ ਕੰਮ ਕਰਾਂ?
- ਕਲਾਉਡ ਐਨੀਮੇਸ਼ਨ ਨੂੰ ਵੱਖ-ਵੱਖ ਸਕ੍ਰੀਨ ਆਕਾਰਾਂ ਵਿੱਚ ਕੰਮ ਕਰਨ ਲਈ, ਦੀ ਵਰਤੋਂ ਕਰੋ UIScreen.main.bounds ਸਕਰੀਨ ਦੀ ਚੌੜਾਈ ਦੀ ਗਤੀਸ਼ੀਲ ਗਣਨਾ ਕਰਨ ਲਈ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਕਲਾਉਡ ਚਿੱਤਰ ਡਿਵਾਈਸ ਦੇ ਸਕ੍ਰੀਨ ਆਕਾਰ ਦੇ ਅਨੁਸਾਰ ਉਹਨਾਂ ਦੀਆਂ ਸਥਿਤੀਆਂ ਨੂੰ ਵਿਵਸਥਿਤ ਕਰਦੇ ਹਨ।
- ਵਿਚਕਾਰ ਕੀ ਫਰਕ ਹੈ UIView.animate ਅਤੇ CADisplayLink?
- UIView.animate ਸਧਾਰਨ ਐਨੀਮੇਸ਼ਨਾਂ ਲਈ ਵਧੇਰੇ ਸਿੱਧਾ ਅਤੇ ਢੁਕਵਾਂ ਹੈ। CADisplayLink, ਹਾਲਾਂਕਿ, ਰੀਅਲ-ਟਾਈਮ ਅੱਪਡੇਟ ਲਈ ਵਧੇਰੇ ਢੁਕਵਾਂ ਹੈ ਅਤੇ ਫਰੇਮ ਅੱਪਡੇਟਾਂ 'ਤੇ ਵਧੀਆ ਨਿਯੰਤਰਣ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰਦਾ ਹੈ, ਇਸ ਨੂੰ ਵਧੇਰੇ ਗੁੰਝਲਦਾਰ ਐਨੀਮੇਸ਼ਨਾਂ ਜਾਂ ਗੇਮਾਂ ਲਈ ਆਦਰਸ਼ ਬਣਾਉਂਦਾ ਹੈ।
- ਮੈਂ ਐਨੀਮੇਸ਼ਨ ਦੌਰਾਨ ਚਿੱਤਰਾਂ ਨੂੰ ਓਵਰਲੈਪ ਹੋਣ ਤੋਂ ਕਿਵੇਂ ਰੋਕ ਸਕਦਾ ਹਾਂ?
- ਚਿੱਤਰਾਂ ਨੂੰ ਓਵਰਲੈਪ ਹੋਣ ਤੋਂ ਰੋਕਣ ਲਈ, ਹਰੇਕ ਦੀ ਚੌੜਾਈ ਯਕੀਨੀ ਬਣਾਓ UIImageView ਸਹੀ ਢੰਗ ਨਾਲ ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਹੈ ਤਾਂ ਕਿ ਚਿੱਤਰ ਸਕ੍ਰੀਨ ਦੇ ਉਲਟ ਕਿਨਾਰਿਆਂ ਤੋਂ ਸ਼ੁਰੂ ਹੋਣ। ਇੱਕ ਸਹਿਜ ਪ੍ਰਵਾਹ ਨੂੰ ਬਣਾਈ ਰੱਖਣ ਲਈ ਜਦੋਂ ਇਹ ਸਕ੍ਰੀਨ ਦੇ ਕਿਨਾਰੇ 'ਤੇ ਪਹੁੰਚ ਜਾਂਦੀ ਹੈ ਤਾਂ ਚਿੱਤਰ ਦੀ ਸਥਿਤੀ ਬਦਲੋ।
ਨਿਰਵਿਘਨ ਕਲਾਉਡ ਮੂਵਮੈਂਟ ਲਈ ਐਨੀਮੇਸ਼ਨ ਫਿਕਸ
ਆਈਓਐਸ ਵਿੱਚ ਨਿਰਵਿਘਨ ਲੂਪਿੰਗ ਐਨੀਮੇਸ਼ਨ ਬਣਾਉਣਾ ਉਹਨਾਂ ਐਪਸ ਲਈ ਇੱਕ ਜ਼ਰੂਰੀ ਹੁਨਰ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਤਰਲ ਮੋਸ਼ਨ ਪ੍ਰਭਾਵਾਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਤੁਹਾਡੇ ਕਲਾਉਡ ਐਨੀਮੇਸ਼ਨ ਨੂੰ ਨਿਰਵਿਘਨ ਕੰਮ ਕਰਨ ਦੀ ਕੁੰਜੀ ਇਹ ਸਮਝਣਾ ਹੈ ਕਿ ਤੁਹਾਡੇ ਚਿੱਤਰ ਦ੍ਰਿਸ਼ਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਕਿਵੇਂ ਪ੍ਰਬੰਧਿਤ ਕਰਨਾ ਹੈ। ਜਦੋਂ ਇੱਕ ਚਿੱਤਰ ਆਫ-ਸਕ੍ਰੀਨ ਚਲਦਾ ਹੈ, ਤਾਂ ਤੁਹਾਨੂੰ ਲੂਪ ਨੂੰ ਰੋਕੇ ਬਿਨਾਂ ਇਸਦੀ ਸਥਿਤੀ ਨੂੰ ਰੀਸੈਟ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਇੱਕ ਸਧਾਰਨ ਹੱਲ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਸ਼ਾਮਲ ਹੈ UIView.animate ਦੇ ਨਾਲ ਵਿਧੀ .ਦੁਹਰਾਓ ਅਤੇ .ਕਰਵਲੀਨੀਅਰ ਐਨੀਮੇਸ਼ਨ ਨੂੰ ਨਿਰੰਤਰ ਅਤੇ ਨਿਰਵਿਘਨ ਰੱਖਣ ਲਈ ਵਿਕਲਪ। 🏞️
ਇੱਕ ਲੂਪ ਬਣਾਉਣ ਦਾ ਇੱਕ ਹੋਰ ਮਹੱਤਵਪੂਰਨ ਪਹਿਲੂ ਚਿੱਤਰਾਂ ਦੀਆਂ ਸਥਿਤੀਆਂ ਨੂੰ ਗਤੀਸ਼ੀਲ ਰੂਪ ਵਿੱਚ ਸੰਭਾਲਣਾ ਹੈ। ਦੂਜੀ ਕਲਾਉਡ ਚਿੱਤਰ ਨੂੰ ਸਕਰੀਨ ਤੋਂ ਬਾਹਰ ਜਾਣ ਤੋਂ ਬਾਅਦ ਇਸਦੀ ਸਥਿਤੀ ਬਦਲਣਾ ਬੇਅੰਤ ਅੰਦੋਲਨ ਦੇ ਭਰਮ ਨੂੰ ਬਣਾਈ ਰੱਖਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਕੁਸ਼ਲ ਕੋਡਿੰਗ ਅਭਿਆਸਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਣਾ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਐਨੀਮੇਸ਼ਨ ਵੱਖ-ਵੱਖ ਡਿਵਾਈਸਾਂ ਅਤੇ ਸਕ੍ਰੀਨ ਆਕਾਰਾਂ ਵਿੱਚ ਸੁਚਾਰੂ ਢੰਗ ਨਾਲ ਚੱਲਦੀ ਹੈ, ਉਪਭੋਗਤਾਵਾਂ ਲਈ ਇੱਕ ਸਹਿਜ ਅਨੁਭਵ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ।
ਸਰੋਤ ਅਤੇ ਹਵਾਲੇ
- ਆਈਓਐਸ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਲੂਪਿੰਗ ਐਨੀਮੇਸ਼ਨ ਬਣਾਉਣ ਲਈ ਇੱਕ ਡੂੰਘਾਈ ਨਾਲ ਗਾਈਡ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ UIView.animate. 'ਤੇ ਹੋਰ ਜਾਣੋ ਐਪਲ ਡਿਵੈਲਪਰ ਦਸਤਾਵੇਜ਼ .
- ਉੱਨਤ ਬਾਰੇ ਵੇਰਵੇ UIImageView ਆਈਓਐਸ ਐਪਸ ਲਈ ਹੈਂਡਲਿੰਗ ਅਤੇ ਕੁਸ਼ਲ ਐਨੀਮੇਸ਼ਨ ਰਣਨੀਤੀਆਂ 'ਤੇ ਲੱਭੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ ਰੇ ਵੈਂਡਰਲਿਚ .
- ਗਾਇਬ ਚਿੱਤਰਾਂ ਵਰਗੇ ਐਨੀਮੇਸ਼ਨ ਮੁੱਦਿਆਂ ਦੇ ਨਿਪਟਾਰੇ ਅਤੇ ਹੱਲ ਕਰਨ ਲਈ, ਇਸ ਟਿਊਟੋਰਿਅਲ ਨੂੰ ਵੇਖੋ ਮੀਡੀਅਮ - ਸਵਿਫਟ ਪ੍ਰੋਗਰਾਮਿੰਗ .