How to turn off the parallax effect. Parallax effect in iOS applications

Another informative note will concern parallax, which appeared along with the seventh version of iOS. In this article, we will try to answer the main questions that concern the user. So what is this panoramic wallpaper and how to set a dynamic wallpaper, how to disable the parallax effect?

Panoramic pictures in the "seven"

Panoramic pictures were already present in the first beta of iOS 7. This feature made it possible to set large panoramas as wallpaper on the home screen or lock screen. After installation, the user could twirl his iOS 7 gadget in his hands, and the photo moved on the screen depending on the angle to which the smartphone or tablet was turned.

In the sixth beta, for some reason, removed such an effect from iOS 7. That is why the original pure iOS 7 does not have such a function as panoramas. You, of course, will be surprised and ask: "Where are they?" They were replaced by the parallax effect. Of course, you can put panoramas, but you will not see the same effect that was present in iOS 7 beta 1.

Parallax effect

Now let's take a look at parallax. This is a great innovation that allows icons and wallpapers on the home screen to live a separate life from each other. Wallpaper is in one plane, and icons are in another. The gadget on iOS 7 reads information from the gyroscope and moves these two planes relative to each other so that as a result of the movement we see those parts of the image that were previously "behind the scenes". Due to these manipulations, the user has a sense of depth and multidimensionality.

When we explained what the parallax effect is and how it works in iOS 7, it becomes clear that definitions such as "Panoramic wallpapers" or "Parallax wallpapers" are misleading users. Indeed, from the point of view of understanding the process and the Russian language, these are different functions, in fact, they are exactly the same action. The so-called "Panoramic wallpapers" are nothing more than simple photos that differ from other images only in their resolution.

To get such "Panoramic wallpapers", users will only need to save any photo in the required resolution, and then upload it to their tablet, smartphone or iOS player. If you do not do this or put a photo that was used in the sixth version of the operating system, then an unpleasant defect with stretching may appear.

Photo resolutions, if you want to get a parallax effect on the working screen (in brackets we have indicated the standard recommended resolution for photos without parallax from the sixth version of iOS):

  • IPad Tablet 2 - 1424 x 1424 (1024 x 1024)
  • IPad Mini - 1424 x 1424 (1024 x 1024)
  • Aypad 3 - 2448 x 2448 (2048 x 2048)
  • IPad 4 - 2448 x 2448 (2048 x 2048)
  • IPhone 4S - 1360 x 1040 (960 x 640)
  • IPhone 5, 5S, 5C -1536 at 1040 (1136 x 640)
  • IPod 5th generation - 1536 by 1040 (1136 x 640)
  • IPhone 4 - does not support parallax (960 x 640)

Already now, many people are engaged in the creation of various collections with such screensavers, there are even applications "Dynamic and parallax screensavers" through which you can download new pictures. But we now know that everything is simpler than it seems. Such applications are just another attempt to cut money.

How to make pictures with this effect yourself?

You can do everything with an image editor. The most popular option is, of course, Photoshop. The main thing that will need to be done is to choose the correct resolution suitable for your gadget (above we have written all permissions for all devices). Once you have an image with the desired resolution, you will need to upload it to your device in one of these ways:

  1. Send the picture to yourself by e-mail, and then save it to the film;
  2. Upload to Dropbox and save to photo gallery again;
  3. Download according to the standard scheme via iTunes.
How do I turn off parallax?

Some users do not like this innovation. You can disable it in the settings. Settings, then Basic, then Universal Access, then Reduce Motion. Click on the "Reduce motion" switch - by pressing this you can turn off the prallax.

Dynamic images

In the iOS 7 updates, dynamic photos appeared. Dynamic images can be set in the settings. We go to Settings, there we find the "Wallpaper and brightness" tab, then we find there "Wallpaper selection" - Dynamic. Dynamic images differ from each other only in color. At the moment, Apple only offers 7 options. Dynamic images allow the elements of the wallpaper to move / change the transparency / decrease in real time.

Perhaps the most important tip is not to upgrade to iOS 10 if you have an old iPhone or iPad. Although, since you are reading this article, it is too late to give you such advice. But don't despair, there are other proven methods!

Give iOS 10 time

The new iOS is packed to the brim with various functions that start indexing data after the initial launch and consume a large amount of resources. For example, the built-in gallery scans all of your photos, detecting faces, and can cause slowdown and decreased system response.

To save your nerves, you just need to give iOS time to complete all processes after the initial launch. This usually takes about eight hours, so it is convenient to update in the evening and leave your iPhone or iPad alone overnight. In the morning you will notice that the system is faster.

Disable parallax effect

In iOS 10, there are even more animations that significantly load the processors of the iPhone and iPad, especially in older devices. If the icons on the desktop do not move when you tilt your smartphone or tablet, you have very little to lose. But everything will open much faster.

"Settings" → "General" → "Accessibility" → "Reduce motion"

The toggle switch we need is hidden in the depths of the settings. We click and enjoy.

Reduce the transparency of the interface

Another decoration effect. There are many semi-transparent elements in the iOS 10 interface, ranging from the dock to various pop-ups. If you turn it off, all this beauty with frosted glass effects will be replaced by harsh gray substrates, but it will not waste extra resources on rendering.


"Settings" → "General" → "Accessibility" → "Increase contrast" → "Reduce transparency"

The opacity toggle switch is in the Increase Contrast section next to Decrease Motion.

Disable background app refresh

Updating data in the background is a handy thing, but is the three seconds of waiting for a feed to Twitter or Facebook worth the additional CPU load on your iOS device, which is already struggling to cope? In addition, it is also a load on the battery, depriving you of several minutes of battery life.


"Settings" → "General" → "Content update"

There is a whole section in the settings with a list of all installed applications. You need to go there and make sure that the toggle switches are turned on only opposite the really necessary applications. Better yet, disable the update completely.

Free up storage space

You probably know that iOS sometimes behaves strangely when there is little free disk space. iOS 10 is no exception: if your iPhone or iPad's storage is full, the system starts to slow down.


"Settings" → "General" → "Using storage and iCloud"

Take a look at the usage statistics and make an audit. It is advisable to have at least 1 GB of free space. If uninstalling applications does not give the desired results, use the cleanup.

Reboot your iPhone or iPad

If you haven't already done so, be sure to restart your iOS device. After enabling, temporary files, cache and other things that can slow down the system are removed. A freshly installed iOS 10 will have a lot of this junk, so do not be too lazy to reboot and remove all unnecessary.


apple.com

To restart, you need to simultaneously press and hold the Home button and the power button until the screen turns white and the Apple logo appears. Alternatively, you can simply turn off and on your iPhone or iPad. The effect will be similar.

The idea of \u200b\u200busing parallax in mobile app design is not new. Like many others, she came to us from the world of web design, where at first it became a very common direction. Parallax gives the design an impressive depth effect and apparent volume. By now, due to some inconveniences associated with the specifics of web application development, the fashion for parallax in the design of sites has subsided. However, mobile apps are a different story altogether. Parallax in mobile design lives on and is not going to go anywhere, and is even added by default to design of the new iOS 7 !

In this article we will tell you about our DVParallaxView component and demonstrate, using its device as an example, how to add exactly the same parallax effect to the application as in the home screen in iOS 7. And even better.

How does parallax work?

Let's digress for a while into the harsh world of physics in order to better understand and structure the mechanism of the parallax effect for ourselves. This will help us to faithfully reproduce it on the phone screen.

So how does parallax work? Its essence is quite simple. Parallax is a change in the position of the same object viewed from two different points in space. You can observe this effect in the real world at any time. All you need is something large to act as a background (for example, the wall of a house) and some object observed against this background, which is closer to you than the background (for example, a lamppost or a tree). If you walk along the wall while watching the lamppost, it will seem to you that the lamppost is shifting relative to the wall. This effect is called parallax - the apparent displacement of the column relative to the wall when you move the observation point, that is, you. In this case, the closer the post is to you, the higher the speed of its displacement will seem. Conversely, if you move a considerable distance from the post and try to walk along the wall of the house again, the post will practically not move relative to the wall. Our eyes are accustomed to assessing the distance to objects in many ways, and one of them is the relative speed of the object's displacement. If you observe a scene in which objects move at different speeds as you move, your eyes immediately tell your brain that objects are at different distances from you. This is the appeal of using parallax in design - by simulating it, you will add depth to a flat scene.

So, in a practical sense for us, the parallax effect is that objects located at different distances from you move relative to you at different speeds. Moreover, this speed is inversely related to your distance to objects. If you are close - the speed of the object is high, if it is far - vice versa.

Let's highlight the main components of this effect. First, for a pronounced parallax, it is desirable to have a background, ideally stationary, or the displacement of which will be negligible in comparison with other objects. Second, parallax can only be observed when there are objects filling the space between the background and the observation point. And the most important thing in these objects is the difference in their distance from you. In other words, objects should form a kind of hierarchy, lining up at different distances from the point of view to the background. And, finally, thirdly, parallax is impossible without the movement of objects relative to the observation point at different speeds.

With all three main points - background, objects and relative motion - we will observe parallax.

Parallax scrolling

Now that we know how parallax works, we need to decide how exactly we will implement it in the code.

The most obvious approach to implementing parallax is parallax scrolling. Played old platform games? If so, then you will most likely remember that while the character was running from the left end of the level to the right, objects in the background moved in the opposite direction at different speeds depending on the expected distance from the foreground. Here is a link to Wikipedia so that you remember exactly what we are talking about.

Parallax scrolling in games was designed in such a way that the scene you see on the screen consists of several layers on which objects are located. Depending on the estimated distance of the layer from the screen (the “forest” layer is closer to you than the “clouds” layer, which are closer to you than the “sun” layer), the layers are displaced at one speed or another. This gives a certain depth to what is happening on the screen, making a flat picture look more voluminous. Admittedly, this approach fits in pretty well with what we've learned about parallax. Indeed, you can mentally split the space between you and the background into layers containing objects in this space.

It is logical to assume that the implementation of the parallax effect should be encapsulated in a certain component-container that contains other components and has a certain hierarchy of views, the position of which will shift by a distance depending on the position in the hierarchy. Let's think about it, is there an element in UIKit that already contains a similar feature? Of course have! Any UIView contains a hierarchy of other UIViews placed into it by the addSubview: method.

Here we come to the main idea behind our DVParallaxView component. The idea is for the component to be a descendant of UIView, encapsulating the parallax effect. The effect itself will be implemented by passing a new value to the contentOffset property of type CGPoint. Thus, DVParallaxView is similar in meaning to UIScrollView. When we change the contentOffset value, we will change the position of each view that is in the DVParallaxView hierarchy. The offset value will be inversely related to the distance of the element from the “top” of the hierarchy. And since the elements in the subviews array are stored starting from the lowest in the hierarchy (that is, from the farthest from the screen), the offset will be in direct proportion to the index of the processed element during a direct pass through the array. In this way, we interpret the presence of "distance" between elements, as in the real world. To control the value of the distance, we will display in the external interface a property that is a multiplier by which the index of an element in the array will be multiplied. By setting it, you can always adjust the parallax value as you wish.

Well, the proposed model looks viable, all the main points are thought out. Here we can put an end to our acquaintance with the conceptual parallax device in DVParallaxView and start a story about its practical implementation.

Create DVParallaxView

In this and the next chapters, we will take a closer look at creating the DVParallaxView component.

Before proceeding directly to the implementation, let's define a couple of properties of the DVParallaxView class.

Firstly, parallax looks best and is most often done against the background of some beautiful picture (remember, we decided that one of the mandatory components of parallax is the background?). Therefore, in our class it is necessary to provide the ability to set a background image. At the very root of the view hierarchy, there will always be a private element of the UIImageView class, which we will call backgroundImageView. This element will act as a background in DVParallaxView. Its location at the root of the hierarchy will guarantee us the smallest relative offset, as befits the background, the farthest object in the scene. To transfer the background image, the public interface of the component will have a special property - backgroundImage of the UIImage class.

Secondly, the parallax effect in iOS 7 is not only about background displacement. If you take a closer look, you will notice one curious detail: the icons are displaced in the direction opposite to the displacement of the background. This is done to enhance the parallax effect and contrast between the shifting background and application icons, which at first glance are stationary. Since we set out to catch up and overtake parallax in iOS 7, we simply have to add such a feature to our component. To do this, we will create a frontView property in the public interface, into which we will transfer the view that we want to shift in the direction opposite to parallax.

So, all the preparations have been made - the theory has been studied, the device of the component has been thought out. You can start creating DVParallaxView. Ready?

Create a single-view project in Xcode, give it a name and any other required attributes. Inside the project, create a DVParallaxView class that is a descendant of the UIView class. Create a DVParallaxView header file and fill it as follows.

#import @interface DVParallaxView: UIView @property (nonatomic, strong) UIImage * backgroundImage; @property (nonatomic, strong) UIView * frontView; @property (nonatomic) float parallaxDistanceFactor; @property (nonatomic) float parallaxFrontFactor; @property (nonatomic) CGPoint contentOffset; @end

All the properties of the class that you see here have already been discussed above, so their set should not surprise you with anything. Two properties that were not discussed explicitly earlier - parallaxDistanceFactor and parallaxFrontFactor - are the very factors that serve to control the amount of offset, respectively, of the hierarchy and frontal view.

In the class implementation file, create a private interface. You need to put the backgroundImageView property in it, since the class does not need to provide public access to it.

@interface DVParallaxView () @property (nonatomic, strong) UIImageView * backgroundImageView; @end

Let the class object be created by calling the initWithFrame: method. In its call, you need to perform all the initial configuration.

- (id) initWithFrame: (CGRect) frame (self \u003d; if (self) (self.parallaxDistanceFactor \u003d 2.f; self.parallaxFrontFactor \u003d 20.f; self.backgroundColor \u003d;; UIPanGestureRecognizer * panRecognizer \u003d [initWithTarget: self action : @selector (panHandler :)];;) return self;)

We set these multiplier values \u200b\u200bbased on our personal preferences. You can choose other values \u200b\u200bif parallax seems to you too strong or, conversely, too weak. Note that the background is from the very beginning in the view hierarchy, even if no image is specified for it.

If you have already asked the question “How are we going to initiate the displacement of views in a component?”, Then you can already see the answer to it in the initializer code - UIPanGestureRecognizer. Yes, we remember that in iOS 7, parallax was caused by tilting the phone. Everything has its time.

The panHandler: method selector was passed to UIPanGestureRecognizer. Let's write this method straight away so that we don't forget to do it later.

#pragma mark - Gesture handler - (void) panHandler: (UIPanGestureRecognizer *) pan (CGPoint translation \u003d;;;)

Nothing unusual. We read the movement of the touch, and set the same offset value to our DVParallaxView. Do not forget to zero the resulting offset at the end.

Now comes the fun part. So far, nothing happens to change contentOffset, let's fix that. Create a setter method setContentOffset as shown below.

- (void) setContentOffset: (CGPoint) contentOffset (BOOL backgroundReachedEdgeX \u003d NO; BOOL backgroundReachedEdgeY \u003d NO; double contentDivider; // 1 if (self.backgroundImageView) (contentDivider \u003d self.subviews.count * self.parallaxDistanceFactor \u003d CGPoint newCakeenter (self.backgroundImageView.center.x + (contentOffset.x - _contentOffset.x) / contentDivider, self.backgroundImageView.center.y - (contentOffset.y - _contentOffset.y) / contentDivider); if ((newCenter.x - self .backgroundImageView.frame.size.width / 2.f)\u003e 0.f || (newCenter.x + self.backgroundImageView.frame.size.width / 2.f)< self.bounds.size.width) { newCenter.x = self.backgroundImageView.center.x; backgroundReachedEdgeX = YES; } if ((newCenter.y - self.backgroundImageView.frame.size.height/2.f) > 0.f || (newCenter.y + self.backgroundImageView.frame.size.height / 2.f)< self.bounds.size.height) { newCenter.y = self.backgroundImageView.center.y; backgroundReachedEdgeY = YES; } self.backgroundImageView.center = newCenter; } // //2 for (int i = 1; i

So, let's take a closer look at the method. The backgroundReachedEdgeX and backgroundReachedEdgeY variables serve to signal that we have reached the edge of the picture by offsetting the background. If the background is set, then it makes sense to check if we have gone beyond the backgroundImage. After all, we do not want users to contemplate the "clipping" of the image, it looks unnatural. Therefore, we considered it necessary to limit the parallax area to the size of the background image, if any. Thus, block // 1 contains a check for going beyond the image.

Block // 2 is a walk through all elements of the view hierarchy with the calculation of the values \u200b\u200bof their centers' displacement depending on their position in the hierarchy. Also, if we are at the edge of the background image along the X or Y axes, then there will be no displacement along these axes.

The main offset logic is created, there is not much left - to set accessor methods for the main properties, and also to overload the addSubview method.

#pragma mark - Getters - (UIImageView *) backgroundImageView (if (! _backgroundImageView) (_backgroundImageView \u003d [init]; _backgroundImageView.contentMode \u003d UIViewContentModeCenter; _backgroundImageView.center \u003d CGPointMake (CGRectGet selfMidX (self.bidounds) ;) return _backgroundImageView;) #pragma mark - Setters - (void) setParallaxDistanceFactor: (float) parallaxDistanceFactor (_parallaxDistanceFactor \u003d MAX (0.f, parallaxDistanceFactor);) - (void) setParallaxFrontFactor \u003d parallaxFactor .f, parallaxFrontFactor);) - (void) setBackgroundImage: (UIImage *) backgroundImage (_backgroundImage \u003d backgroundImage;; CGPoint origin \u003d CGPointMake (CGRectGetMidX (self.bounds) - backgroundImage.size.width / 2.f, CGRectGetMidY (self bounds) - backgroundImage.size.height / 2.f); self.backgroundImageView.frame \u003d (CGRect) (. origin \u003d origin, .size \u003d backgroundImage.size);) - (void) setFrontView: (UIView *) frontView ( _frontView \u003d frontView; ; ) #pragma mark - Overriding - (void) addSubview: (UIView *) view (if (self.frontView); else;)

Let's go in order. Everything is clear with the getter for backgroundImageView - an ordinary lazy instantiation, we create an object only when needed. Setting the ParallaxDistanceFactor and ParallaxFrontFactor values \u200b\u200bwill automatically check for negative values. The setter for backgroundImage sets the background image in the backgroundImageView and simultaneously centers its position on the screen. The frontView setter simultaneously adds frontView to the subview hierarchy, so it doesn't make sense to add it manually. Finally, the overloaded addSubview: method works as usual, if frontView is not defined in DVParallaxView, but if it is defined, then any view will be one position below it in the hierarchy. After all, it is assumed that the frontView is always ahead.

Let's dwell on this for now and switch to the main viewController of our test project. It's time to plug in our new component and test it in action. Since we want to look like the new home screen in iOS 7, in the test project we will try to recreate it. To do this, we need a background picture (preferably with an image of space) and application icons. Moreover, since our component also supports other objects between the background and foreground, we will add them too. Since the background is space, then we will develop a space theme and slightly revive the desert space with the planet Earth and its satellite - the Moon. You can find all the necessary images on the Internet or pick them up from our test project on github.

In iOS 7, app icons are the foreground, so in DVParallaxView we have to place them in the frontView. To do this, we will create a UIView, in which we will place all the icons. In order not to have to manually create and place all these components, create a container and icons in the storyboard, then connect them to the controller.

This is what the front view looks like in our test application. Bind the UIView container as an IBOutlet to the controller and name it frontView. Let's get down to creating a DVParallaxView instance.

Create a parallaxView property in your controller's private interface. Create a getter for this property.

- (DVParallaxView *) parallaxView (if (! _ParallaxView) (_parallaxView \u003d [initWithFrame: self.view.bounds]; [_parallaxView setBackgroundImage:]; UIImageView * earth \u003d [initWithImage:]; earth.frame \u003d (CGRect) (.or \u003d CGPointMake (CGRectGetMidX (self.view.bounds) - earth.image.size.width / 2.f, CGRectGetMidY (self.view.bounds) - earth.image.size.height / 2.f), .size \u003d earth .frame.size); [_parallaxView addSubview: earth]; UIImageView * moon \u003d [initWithImage:]; moon.frame \u003d (CGRect) (.origin \u003d CGPointMake (CGRectGetMidX (self.view.bounds) + 30.f, CGRectGetMidY ( self.view.bounds) + 30.f), .size \u003d moon.frame.size); [_parallaxView addSubview: moon]; [_parallaxView setFrontView: self.frontView];) return _parallaxView;)

The code shows how after creating an instance of the DVParallaxView class, the background "galaxy2" is assigned to it, then images of the Earth and the Moon are added to the view hierarchy. Then the frontView property is set as the foreground. Now all we have to do is add our component to the controller's view hierarchy. Add this line to the viewDidLoad method:

;

Parallax is ready, you can start the project. As you can see, the component we have created already at this stage of its development gives a completely reliable parallax effect.

There is only one detail left. So far, moving elements is done by touching. It's time to fix that. It's time to connect a gyroscope to DVParallaxView.

Connecting Core Motion

If you have read our article, you already have all the necessary skills to use a gyroscope in this project, and you also know that to connect a gyroscope, you need to add the Core Motion framework to the project. But how exactly are we going to use the sensor data? In our project, we chose rotationRate to indicate the tilt of the phone. That is, contentOffset will change if there is a non-zero angular rate of rotation.

Connect the framework to the DVParallaxView class implementation file.

#import

Then create motionManager and displayLink properties in the private interface of the class.

@property (nonatomic, strong) CMMotionManager * motionManager;

@property (nonatomic, strong) CADisplayLink * displayLink;

CMMotionManager is the main CoreMotion class used to access data from sensors. CADisplayLink is a timer that works with the screen refresh rate, which will call the method for updating data from the gyroscope.

Now let's add accessor methods for the new properties.

- (CADisplayLink *) displayLink (if (! _DisplayLink) (_displayLink \u003d;) return _displayLink;) - (CMMotionManager *) motionManager (if (! _MotionManager) (_motionManager \u003d [init]; _motionManager.deviceMotionUpdate) return ;)

Obviously, a developer using the DVParallaxView component does not necessarily always need to use a gyroscope. There may be other conditions and actions to change the contentOffset value. Therefore, the component should provide the ability to choose whether or not to control the parallax through the gyroscope. To provide this choice, we will display the gyroscopeControl property in the public interface, which will be of type BOOL. If it is set to YES, the component starts reading the gyroscope readings and displaces the hierarchy when the device is tilted. If it is set to NO, then the component stops responding to changes in the angular velocity of the device. At the same time, the motionManager and displayLink properties should stop their activity so as not to waste processor resources.

As we agreed, create a gyroscopeControl property in the public interface.

@property (nonatomic, strong) BOOL gyroscopeControl;

Then create a setter for it.

- (void) setGyroscopeControl: (BOOL) gyroscopeControl (if (_gyroscopeControl \u003d\u003d gyroscopeControl) return; _gyroscopeControl \u003d gyroscopeControl; if (gyroscopeControl) (; forMode: NSDefaultRunLoopMode];) else (;; self.motion;))) \u003d n

Note that when the property is set to YES, the motionManager starts receiving readings from the deviceMotion, not the gyroscope. The reasons for this choice are described in detail in the article. When set to NO, data acquisition is stopped, displayLink is removed from all threads by calling the invalidate method, and motionManager itself is set to nil.

Now we just have to write a method for converting data from the gyroscope into data for contentOffset, and also implement the displayLinkHandler method, which is called in the displayLink timer.

#pragma mark - Gyroscope to offset - (CGPoint) contentOffsetWithRotationRate: (CMRotationRate) rotationRate (double xOffset \u003d (fabs (rotationRate.y)\u003e DV_ROTATION_THRESHOLD)? rotationRate.y * DV_ROTATION_MULTIPLIER: 0.f; double fabs x)\u003e DV_ROTATION_THRESHOLD)? rotationRate.x * DV_ROTATION_MULTIPLIER: 0.f; CGPoint newOffset \u003d CGPointMake (self.contentOffset.x + xOffset, self.contentOffset.y + yOffset); return newOffset;) - (void)] (displayLinkLink )

Do not forget at the very beginning of the implementation file to describe the two define-constants that we used in the transformation method.

#define DV_ROTATION_THRESHOLD 0.1f

#define DV_ROTATION_MULTIPLIER 2.5f

In the controller class, when creating a DVParallaxView object, set its gyroscopeControl property to YES.

So, the gyroscope is connected, the data from it should now be correctly converted to an offset. Now you can compile the project and run it on the device. Looks great, doesn't it? Note that the gyroscope will only work on a real device.

Conclusion

If you are reading this paragraph, then you have just created a separate component with a parallax effect, like in iOS 7. And even more - the effect in the DVParallaxView component is more complete, since it shifts not only the background and foreground, but also the entire hierarchy of elements between them. As you can see, his device was not at all complicated.

DVParallaxView was created by us for free use and posted in our repository. Use, improve, we look forward to your suggestions!

Let's try to answer the burning questions that readers ask and ask in the comments. And we are happy to answer them.

We'll start with panoramic wallpapers in iOS 7. Or rather, with their absence ...

Panoramic wallpapers in iOS 7

Panoramic wallpapers appeared in iOS 7 beta 1. This function allowed setting panoramic photos (examples of panoramas are on our forum) as wallpaper on the desktop or lock screen. Users turned the iOS 7 device in their hands and the photo moved on the screen depending on the angle at which the device is at the moment.

In iOS 7 beta 6, for some reason, Apple removed this functionality from the firmware. That's why in the final version of iOS 7.0 there is NO “Panoramic Wallpaper” feature!

You can of course set panoramas instead of wallpapers. The system will allow you to do this, but it will not give “that very” effect. You will only see the Parallax effect.

Parallax effect in iOS 7

Parallax effect - a beautiful innovation in iOS 7. Parallax effect allows wallpapers and icons on the desktop to exist as if separately from each other. Icons are in one plane, and wallpapers are in another. The iOS 7 device reads data from the gyroscope and moves these planes relative to each other. As a result of the movements, we see those parts of the wallpaper that have remained behind the scenes. There is a sense of multidimensionality and depth.

Now that I have explained how the parallax effect works in iOS 7, it becomes obvious that concepts such as “Parallax wallpaper” or “Wallpaper with parallax effect” from the point of view of the Russian language and understanding of the process, are erroneous and only mislead users. The so-called "Parallax wallpapers" are nothing more than ordinary standard wallpapers, which differ only in resolution.

It is enough to save the photo in the required resolution, upload it to the iPad, iPhone or iPod Touch and it will have the parallax effect in iOS 7. If you do not do this or use the wallpaper that was created for iOS 6, then an unpleasant image stretching effect because of which many of our readers could not sleep well.

Snapshot resolutions if you want parallax effect in wallpaper (in brackets is the standard recommended resolution for snapshots without parallax effect in iOS 6 and below):

iPad 21424 x 1424 (1024 x 1024)

iPad Mini1424 x 1424 (1024 x 1024)

iPad 32448 x 2448 (2048 x 2048)

iPad 42448 x 2448 (2048 x 2048)

iPhone 4S1360 x 1040 (960 x 640)

iPhone 5, 5S, 5C1536 to 1040 (1136 x 640)

iPod Touch 5Gen1536 to 1040 (1136 x 640)

iPhone 4does not support parallax effect (960 x 640)

Enterprising comrades are already riveting collections of special parallax wallpapers with might and main and even creating such applications. But you and I now know that everything is easier than it seems and this application is just an attempt to cut money off quickly on a wave of ignorance.

How to make wallpaper yourself?

It is very easy to make wallpaper yourself, even with parallax effect, even without it.

Our site has long had step-by-step instructions using Photoshop as an example - How to make wallpaper for iPad. The instruction has not lost its relevance now. The main thing is to choose the correct resolution for your device (the recommended resolution is a little higher in this article).

After the picture has been created in the required resolution, you can:

1) send it to yourself by mail and then save it to film

How to disable Parallax effect in iOS 7?

Some users don't like the parallax effect. You can disable it in the settings.

Settings-\u003e General-\u003e Universal Access-\u003e Reduce Motion. Turn on the "Reduce motion" switch.

Dynamic wallpapers in iOS 7

IOS 7 introduces dynamic wallpapers built into the system. Some call them "live" or "dynamic". But Apple said Dynamic, which means we'll stick to the official terminology.

You can install them in the settings ( Settings-\u003e Wallpaper and brightness-\u003e Wallpaper selection-\u003e Dynamic). By type, Dynamic wallpapers differ from each other only in color. There are now 7 colors to choose from.

On all wallpapers, balls move / decrease / increase / change transparency in real time (everyone already knows about Apple's love of balls).

Own unique dynamic wallpapers for iOS 7 cannot be officially made now! Use what you have. In the future, there will be ways to set your own dynamic wallpaper.

After the release of the incredibly popular, according to some comrades, iOS 7, other comrades began to feel dizzy. Either from success, or from whirling on the iPhone screen. Indeed, sometimes you poke-poke at the menu with your finger, and he twists-twists, but he cannot do anything, either the phone itself does not understand what is required of it, or the majority of users are really saying the truth: the new parallax effect only interferes with normal work. And the question is - how to turn off all these effects of flickering, twisting, approaching, creeping, colliding, in a word - all these extra beauties?

Note that any additional graphic effects have a very noticeable effect on the iPhone's battery; additional very serious powers of the device are used to perform them. Thus, turning off all this garbage will increase the battery life. In the case of the iPhone, even an extra minute is sometimes essential, right? Looking at how the percentages of the battery charge drain, sometimes I want to cry.

So, turn it off!

1. iOS Settings -\u003e General

2. Basic -\u003e Accessibility

3. Universal access -\u003e Reduce movement

4. Decrease motion -\u003e slider to the right