I know that it's possible to record the screen on Yosemite and take screenshots that have 9:41 am. Is this same functionality possible with the Simulator?
Starting with Xcode 11 beta 4, you can use the
xcrun simctl command to set the time and battery in the Simulator.
xcrun simctl status_bar <device> override --time "9:41" \ --batteryState charged --batteryLevel 100
Example of usage:
xcrun simctl status_bar "iPhone 11 Pro Max" override --time "9:41" \ --batteryState charged --batteryLevel 100
The simulator needs to be run before executing the command.
There is a tool to loop across all running simulators and also handle time zones a bit better than explicitly calling it each time:
There are 2 ways to do this:
1. Clone, build and run SimulatorStatusMagic in your simulator.
This will only work for your simulator.
cd ~/Desktop git clone [email protected]:shinydevelopment/SimulatorStatusMagic.git cd ~/Desktop/SimulatorStatusMagic open SimulatorStatusMagic.xcodeproj/ # Build the "Framework" Target # Build & RUN the "SimulatorStatusMagic" in your Emulator
2. via QuickTime Player:
This will only work for your device.
- Connect your own device to your Mac.
- Open "QuickTime Player" (Install if required)
- File → New Movie Recording
- Click the dropdown next to the Red Record button
- Select your iPhone e.g: "Anil's iPhone"
- Record and bring your screen up, then Stop the recording.
- Now you can "Play" your recording, find the screen you want, pause it,
Edit Menu → Copy (will copy the screen grab).
Both should result in something like this (Time 9:41 AM - Full Battery and Wifi):
Now that Apple has delivered a tool to manage this, use Nine41 and/or
xcrun simctl status_bar
Those are far more time efficient than fixing it in post production with Photoshop or Pixelmator or Acorn and your video editor of choice as you are in to pay attention to these details.
One screen shot at the right time with light and dark backgrounds let you adjust the battery level, bars, time and more to suit your needs.
There are even plug in to the simulator that will programmatically clean up the status bar for more than just time if you are running your code that way and not on a device: