i3Factory World

Your Iphone, iPad & Android Application Factory

Browsing Posts tagged osX

ios_8_Apple_iOS8_FearuresAs we all know by now Apple has unveiled iOS 8 at the Worldwide Developers Conference on June 2 2014 a beta version of the software was made available to developers on the same day, with a launch planned for the public this fall of 2014.
At this time, several beta versions have been released to developers, and beta 5 is the current version of the operating system in the hands of the developer community.
Until today the developers have only seen beta versions of iOS 5 8, but many Apple’s carrier partners
received iOS 8 beta 6 on the 19th of August, hinting at an imminent release of the so-called golden master release.
In this 8 version of the Apple operating system are witnessing an ever better integration between Apple devices, both mobile and desktop, and believe to be an important point of connection of both iOS and OS X 8 Yosemite.
Apple has introduced several new features “continuity” that are designed to connect the iPhone, iPad and Mac, as never before.”

August 2014

  • Aug 19 Apple Seeds iOS 8 Beta 6 to Carrier Testing Partners, but Not Broader Developer Community
  • Aug 4 iOS 8 Beta 5 Tidbits: SMS Relay, New iCloud Icons, Health App Updates, and More
  • Aug 4 Apple Releases iOS 8 Beta 5 to Developers

July 2014

  • Jul 21 Apple Releases iOS 8 Beta 4 to Developers ; iOS 8 Beta 4 Tidbits: Tips App, Control Center Redesign, New Display Options
  • Jul 16 iOS 8 Beta 4 Reportedly Coming Monday, July 21
  • Jul 14 iOS 7 Adoption Hits 90% Ten Months After Release
  • Jul 8 Siri ‘Just Thrilled’ About iOS 8, but Sad About Lack of Stage Time at WWDC
  • Jul 7 Apple Releases iOS 8 Beta 3 to Developers;  Apple’s ‘Health’ App Gains Ability to Track Steps With M7 Motion Coprocessor in New iOS 8 Beta ;  iOS 8 Beta 3 Tidbits: iCloud Drive Access, New Handoff Setting, and More
  • Jul 4 Apple Planning to Wipe CloudKit Data for iOS 8 and Yosemite on July 7 Ahead of Beta Updates

June 2014

  • Jun 30 App Extensions, Third-Party Touch ID Access Demoed With iOS 8 1Password Beta
  • Jun 26 iOS 8 Beta 3 Reportedly Not Launching Until Tuesday, July 8
  • Jun 20 Hands-On Installation and Usage of TouchPal’s Gesture Keyboard for iOS 8
  • Jun 20 Yahoo’s Missed Opportunity with iOS 8 Weather Hints at Uncertain Future in Stocks App
  • Jun 19 iOS 8 to Expand Manual Controls for iPhone Photographers ; Hidden ‘City Tours’ Flyover Feature for iOS 8 Maps Discovered in Beta 2
  • Jun 18 Evidence of iPhone 6 Atmospheric Pressure Sensor Found in iOS 8
  • Jun 17 New Apple TV Beta, iOS 8 Beta 2 Lay Groundwork for Upcoming Family Sharing Feature

IOS_OSX_maps_OFFLINE

New MapKit features

In WWDC 2013 Apple introduced many new MapKit features for iOS 7 and added this framework in OSX 10.9 (Mavericks). One of the major changes, which in my opinion didn’t get enough relevance in the developer community, has been the introduction of some base classes that allow full map customization and support for offline maps. In this article I’m going to describe the new MKTileOverlay class and present an example, for both iOS and OSX, that demonstrates the new capabilities.

Since the earlier iPhone OS versions there were many apps in the App Store that were supporting maps different from the ones provided by the operating system: consider for example Navigation apps that required support for offline navigation, that is the possibility to see the map even without internet connection. Another requirements for some special kind of applications that needed to show proprietary information (such as “Yellow Pages” apps) or technical information (e.g. when there was the requirement to show level curves for mountains or to represent the sea level).

There were several issues due to this limitation: first of all the overall mapping experience was completely different of these different approaches each other and in most cases they were subpar if compared with the OS maps performance (either with Google or Apple data). Besides from the point of view of the developer there were the problem of providing the right mapping code to support the map provider data: there were no a unique solution, but many. Some were commercial and expensive, other were open source but with lack of support and finally there were a lot of web-browser based solutions whose performances were far from the native maps other than difficult to integrate with Objective-C.

What we’re going to show in this article is how these things changed drastically and how it is easy to integrate your own map content inside the common MapKit framework.

Map overlays

At the base of our discussion there is the concept of “map overlay”. This is not new in MapKit, but with iOS7 things changed. Overlays are essentially parts of a map that can be overlayed over the base map, that is the part of the map representing the ground, the borders, the roads, and so on. Typically the usage of overlayed is to emphasize some regions of the map having a common property: e.g. to highlight a specific country or to represent the several intensities of an earthquake that occurred in a certain area or finally to highlight a road path in a navigation app.

From the point of view of the developer, an overlay is any object that conforms to the MKOverlay protocol. This protocol defines the minimum properties and methods required to define an overlay: their are the approximate center coordinate and the bounding box the fully encloses the overlay (boundingMapRect). These two properties allow MapKit to determine if a specific overlay is currently visible or not in the map so that the framework can take the actions needed to display this overlay. When an overlay object is added to the map using one of the MKMapView’s addOverlay: methods the control passes to the framework which, when determines that a specific overlay needs to be displayed, calls the map view delegate asking him to provide the graphical representation of the overlay. Before iOS7 Apple was providing a set of concrete MKOverlay compatible classes and they were associated to their corresponding MKOverlayView. E.g. to represent a circular overlay we could use the built-in MKCircle class and then provide, for rendering, the associated MKCircleView class, without the need to define our own object.

With iOS7 things changed: now the MKOverlayView has been replaced by the MKOverlayRenderer. Even if this changesdoesn’t require difficult refactoring to translate the code from pre-iOS7 to iOS7, thanks to the fact that Apple did a 1:1 mapping of methods from the old class to the new class, conceptually the change is significant: now the graphical representation of the overlay is no more provided by a UIView subclass, which is typically considered a heavy class, but it is provided by a class, MKOverlayRenderer, which is much more lightweight and descends directly from NSObject. However the mapping between the old and new class is complete, so in the circle example we can see MKCircleView replaced by MKCircleRenderer.

Finally overlays are stacked on the map, so they are given a Z-index that provides the relative positions of overlays each other and with the fixed parts of the map. Before iOS7 you could stack this overlays and define their positions as in an array, with iOS7 two stacks are defined in fact, and they are called “levels”: one level is the “above the roads level”, the other level is the “above the labels level”. This is an important and useful distinction because now we can change how the overlay rendering interacts with the map by specifying if it lies above or below the labels.

Tile overlays

Whatever is the complexity and size of the overlay, we have seen them up to now overlays as specific shapes. With the new MapKit provided with iOS 7 and OSX Mavericks, there is a new type of overlay called tiled overlay. You may consider this type of overlay as a particular layer the covers the whole map: due to its large dimensions this overlay is tiled, that is it is partitioned in bitmap areas to reduce the memory required to show the data and make the overlay rendering efficient. The purpose of this concrete implementation of the MKOverlay protocol, called MKTileOverlay (together with its rendering counterpart given by the MKTileOverlayRenderer class), is to efficiently represent the whole set of tiles across the map plane and for different zoom levels. This last point is important: when you’re displaying a map using bitmap drawing (to be compared with vector drawing) you can get an efficient implementation only if the specific bitmap representing a part an area of the map has the right details suitable for the current zoom level. This means that if we show the full Europe map we don’t need to present road and cities should be represented as points and only for the major ones; as soon as we zoom in in a specific area then we cannot continue to represent the area by scaling the same tile, because it doesn’t contain the required information and also because we would see evident scaling effects. The solution to this is to divide the continuous allowed zoom range in discrete levels and for each level provide the required set of tiles that will show the details appropriate for that levels. It is evident that if we keep the single bitmap tile size constant (e.g. 256 x 256 pixels) then for each zoom level we must increse the number of tiles by a factor of 4: you can see this in the picture below: the single european tile at zoom level 3, when zoom to zoom level 4 has been split, and furtherly details, with four new different tiles having all the same size of the original tile.

 

map_tiles_offline-mapping

URL templates

The tiled overlay class works efficiently as it does a lazy loading of the tiles: this means that a bitmap tile is looked for and loaded only when it needs to be displayed. In order to know the location of the tile, the developer must define in the tile overlay definition the so-called URL template. This is a string representing a template for the final URL that will be used to retrieve the tile: this template will contain some placeholders that will be replaced by effective values to get the final URL. Each tile can be characterized by 4 parameters: x and y for the tile indexes in the map plane, z for the zoom level and finally scale for the bitmap image resolution (scale factor). The corresponding placeholders for these parameters are: {x} {y} {z} {scale}. So as an example, the OpenStreetMap template URL will be http://c.tile.openstreetmap.org/{z}/{x}/{y}.png and then the tile with index X=547 Y=380 and zoom level Z=10, that fully encloses the city of Rome, will be represented by the URL: http://c.tile.openstreetmap.org/10/547/380.png (see below the image taken from our OSX demo app).

iOS_offline_map_rome_tile

Note that a URL template can be an http:// template to retrieve tiles from the internet, but it could also be a file:// template if we want to retrieve files from the disk: in this way we can save our tiles in the application bundle, or download and install a full tiles package for a certain city, and then display maps even if the device is not connected to the internet.

The mechanism that is used by the framework to translate a required tile coordinate (x;y;z;scale) to an effective bitmap is composed of several steps: this gives the developer the possibility to hook its own code to effectively customize the way the tiles are generated. This can be done by subclassing MKOverlayTile. Note that this is not required if setting the URL template is enough for you.

When the map framework needs a specific map tile, it calls the loadTileAtPath:result: of the MKOverlayTile class (or subclass):

1
- (void)loadTileAtPath:(MKTileOverlayPath)path result:(void (^)(NSData *tileData, NSError *error))result;

The first method argument is called path and is a MKTileOverlayPath structure which contains the tile coordinates:

1
2
3
4
5
6
typedef struct {
	NSInteger x;
	NSInteger y;
	NSInteger z;
	CGFloat contentScaleFactor; // The screen scale that the tile will be shown on. Either 1.0 or 2.0.
} MKTileOverlayPath;

The second method argument is a completion block that needs to be called when the tile data has been retrieved: this completion block will be called by passing the data and an error object. The MKTileOverlay default implementation will call the -URLForTilePath method to retrieve the URL and then it will use NSURLConnection to load the tile data asynchronously.

If we want to customize the tile loading behaviour we can easily subclass MKTileOverlay and redefine the loadTileAtPath:result: with our implementation of the loading mechanism. E.g. we can implement our own tiles caching mechanism (other than the one provided by the system via NSURLConnection) to return the cached data before triggering the network call; or we could watermark the default tile if we are shipping a freemium version of our offline map.

A more light way to hook into the tile loading mechanism is to redefine in our subclass the -URLForTilePath: method:

1
- (NSURL *)URLForTilePath:(MKTileOverlayPath)path;

The purpose of this method is to return the URL given the tile path. The default implementation is just to fill-out the URL template, as specified above. You need to redefine this method if the URL template mechanism is not sufficient for your needs. A typical case is when you want to pass in the URL a sort of “device identifier” to validate the eligibility of that specific app to access the URL (e.g. if you provide a limit to the quantity of data that can be accessed by a user on a given time or if you want to charge for this data), another case if you have multiple tile servers and you want to do a sort of “in-app” load balancing or regional-based API access (e.g. you have servers in multiple locations and based on the effective device location you want to access the closer server).

The tile renderer

As all overlays are associated to a renderer, also the tile overlay has its concrete renderer class: MKTileOverlayRenderer. Normally you don’t need to subclass this renderer so your map delegate’s -mapView:rendererForOverlay: method can simply instantiate the default tile overlay renderer initialized with your default or subclassed tile overlay instance. Possible applcations of a custom overlay renderer are when you need to further manipulate the bitmap image, e.g. adding a watermark or applying a filter, and this manipulation is independent from the tile source. In the demo code I defined a custom renderer to be used specifically for the Google map, whose effect is to add a sort of colored translucent mosaic on top of the map tiles.

The demo code

You can get the demo code from Github. This code works on both iOS 7 and OSX 10.9 and its purpose is to present a map and give the user the possibility to switch between different tile set: Apple (system), Google, OpenStreetMap and offline from a subset of OpenStreetMap tiles bundled within the app. In all cases I applied an extra overlay layer to show the tile grid with the x,y,z path associated to each grid. (Note: in OSX if you don’t code sign the app using your OSX Developer Program certificate, you will not be able to see the Apple tiles: the other three tile sets will be visible instead). You will see how you can fully take advantage of all features common to the MapKit (zoom, rotation, pan, custom overlays and also annotations which I didn’t include in the demo) and the only difference is in the tiles source and how they are rendered.

 

map-offline-tiles-demo_code

As you can see in the demo apps, there is a main view controller (iOS) and window controller (OSX). In both cases the main view contains an instance of MKMapView and a segmented control to switch between different visualizations. On the map I have instantiated two overlays. The first one is the grid overlay:

1
2
3
4
 // load grid tile overlay
 self.gridOverlay = [[GridTileOverlay alloc] init];
 self.gridOverlay.canReplaceMapContent=NO;
 [self.mapView addOverlay:self.gridOverlay level:MKOverlayLevelAboveLabels];

This is a tile overlay of subclass GridTileOverlay. It will not replace the map content (this means that is effectively overlayed on the map content) and its purpose is to draw, just above labels, the tiles grid.

The reloadOverlay method is called each time the overlay type selector is changed or when the view is loaded. It removes any existing tileOverlay and replaces it with a new one:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
-(void)reloadTileOverlay {

	// remove existing map tile overlay
	if(self.tileOverlay) {
		[self.mapView removeOverlay:self.tileOverlay];
	}

	// define overlay
	if(self.overlayType==CustomMapTileOverlayTypeApple) {
		// do nothing
		self.tileOverlay = nil;
	} else if(self.overlayType==CustomMapTileOverlayTypeOpenStreet || self.overlayType==CustomMapTileOverlayTypeGoogle) {
		// use online overlay
		NSString *urlTemplate = nil;
		if(self.overlayType==CustomMapTileOverlayTypeOpenStreet) {
			urlTemplate = @"http://c.tile.openstreetmap.org/{z}/{x}/{y}.png";
		} else {
			urlTemplate = @"http://mt0.google.com/vt/x={x}&y={y}&z={z}";
		}
		self.tileOverlay = [[MKTileOverlay alloc] initWithURLTemplate:urlTemplate];
		self.tileOverlay.canReplaceMapContent=YES;
		[self.mapView insertOverlay:self.tileOverlay belowOverlay:self.gridOverlay];
	}
	else if(self.overlayType==CustomMapTileOverlayTypeOffline) {
		NSString *baseURL = [[[NSBundle mainBundle] bundleURL] absoluteString];
		NSString *urlTemplate = [baseURL stringByAppendingString:@"/tiles/{z}/{x}/{y}.png"];
		self.tileOverlay = [[MKTileOverlay alloc] initWithURLTemplate:urlTemplate];
		self.tileOverlay.canReplaceMapContent=YES;
		[self.mapView insertOverlay:self.tileOverlay belowOverlay:self.gridOverlay];
	}
}

In the Apple maps case no extra overlay is added of course: we just use the base map. When we select to view the Google and OpenStreetMap we will use a standard MKTileOverlay class with the appropriate URL template. In both cases the overlay will be added with the canReplaceMapContent property set to YES: this replaces the Apple base maps completely and will avoid that those data will be loaded. Note that we add the tileOverlay just below the gridOverlay. Finally the offline case still uses a base overlay class but with a file URL template: note that we create the path from a hierarchical directory structure build inside the bundle. In this case too the new tiles replace the base ones and are inserted below the grid.

Our controller, being a delegate of MKMapView, responds to the -mapView:rendererForOverlay:. This is required by every application that uses overlays as this is the point where the app effectively tells the system how to draw an overlay that is currently visible in the map. In our case we just check that the overlay is a tile overlay (this is a general case to consider that fact that we might have other types of overlays) and based on the selection we use the standard MKTileOverlayRenderer or a custom renderer WatermarkTileOverlayRenderer. The latter is used to apply a randomly colored semi-transparent effect on top of the tiles, getting as a result a vitreous mosaic effect.

Conclusions

The possibility to easily switch between different map types but keeping the same “map navigation experience” is one of the most revolutionary features introduced with iOS 7, other than the longly awaited introduction of native maps inside OSX. This provides the same map infrastructure whatever is the content. Obviously the generation of custom map content is another huge and highly specialized task that we cannot cover here: but for developers this is a great step forward.

References

  • Location and Maps Programming Guide from Apple Developer Library
  • WWDC 2013 session 304 video: What’s new in Map Kit from Apple WWDC 2013 videos
  • MBXMapKit GitHub project by Mapbox – A simple library to intergrate Mapbox maps on top of MapKit, one of the first applications of tiled overlays

“viggiosoft github”

  • The GDAL project one of the main references for custom maps creation. Here is a link to a compiled version of the GDAL OSX Framework
  • Maperitive another great tool (for Windows only) to create custom maps and prepare them for offline usage
Posted by Carlo Vgiani

No virus

robably some software companies that produce anti-virus or Anti-malware attempt to re-launch the news of a dangerous virus found, finally, also for Mac.
When a research center, that some newspaper claims to have contacted, declares has found a virus just for those operating systems, Mac OSX or Linux, which by their nature are immune to these virulent sophisticated software that exploit the inherent insecurity of Characteristics in the design of some operating systems.
We know that Steve Jobs had asked all of its engineers to project an operating system (OSX) based on Unix / Linux which has a deep management permits model  for read / write and execute each component of the software available on the memory .

In these days in newspapers around the world, as the web pages of several antivirus vendors, the news is published on the discovery of a malicious Virus named OSX.Tsunami designed to infect Linux systems would be the Apple world.

I am writing this article especially in respect of the Apple engineers who have worked very hard just to provide an operating system that is not unlike other infected systems spread across the many Pc.

In fact, the so-called OSX.Tsunami cannot  be considered a virus, but is classified as a Trojan Risk Level: Very Low 1 (low risk)

See below this article how eliminate it without spending a penny, with a simple step as this “Trojan Horse” takes advantage of the now known dangerousness of IRC channels and a no many Mac users who use them.

Although the network is turning to read self-styled journalists and experts who advise to “stay tuned” and suggest to buy this or quell’antivirus, I think an antivirus install on a Mac is almost useless, except for the sole fact of insstalling being able to check if some viruses that would have no effect on  Apple system but may infect any PC connected at the same network.

So let’s see how Symantec, the most famous antivirus company, Tsunami ranking this threat:
OSX.Tsunami
Risk Level 1: Very Low

Discovered: October 26, 2011
Updated: October 27, 2011 4:20:38 AM
Type: Trojan
Infection Length: 42.348 bytes

OSX.Tsunami  Is A Trojan horse , opens a backdoor on the compromised computer.
Note: This threat is based on Linux.Backdoor.Kaiten.
Threat Assessment

 Wild Level: Low
Number of Infections: 0 – 49
Number of Sites: 0 – 2
Geographical Distribution: Low
Threat Containment: Easy
Removal: Easy

Damage

Damage Level: Medium
Payload: Opens a back door.

From the above card is easy to see that this Trojan or Malware is not ‘a virus, like many would have you understand.
But for the respect for the Apple engineers I mentioned a few lines up more public i3Factory the simple steps to follow to
Remove yourself OSX.Tsunami

Technical Details
Threat level: 3 – Average
Distribution: Low
Damage: Low
Dispersibility: Low

Full name of the virus: Trojan.MAC / Tsunami @ Other
Code Type: Trojan Horse Trojan: a program that appears to be beneficial or useful, but turns out to be harmful at some point. Does not spread by itself.
The affected platforms: Macintosh, Mac, and can affect systems running Mac OS X family
Capacity of permanent residence: If run automatically each time the system restarts
alias:
OSX / Tsunami-A (Sophos)
Backdoor: OSX / Tsunami.A (F-Secure)
Capacity for self-propagation: No
It lacks its own spreading routine.
Can ‘infect your system in the following ways: It must be installed manually by the user

Infection / Effects

Tsunami When executed, it performs the following:

Edit the file
“/ System / Library / LaunchDaemons / com.apple.logind.plist”
Create the following file as a copy of itself
“/ Usr / sbin / logind”

Its main function is to cause the Distributed Denial of Service (DDoS). It also allows downloading files on the infected computer and execute commands.

Communicates with the server command and control through the IRC protocol. On the next screen you can see a collection of commands that can be received by the Trojan:

 

Some IRC server to which you connect the Trojan are as follows:
pingu.anonops.li: 6667  | Channel #tarapia.
x.lisp.su: 6667 | Channel #harbou
The source code of this Trojan is an adaptation of an existing Mac OS X, since 2002, on the Linux platform.

Note: If your Mac is installed with a program such as network controller as Little Snitch or Hands Off ,  the risk may not be able to block malicious connections is very limited.

 

Disinfection and removal of OSX.Tsunami

If you believe you are infected, because you have found connections to port 6667 server through a firewall or a program like Little Snice Hand or Off, you can perform the following steps to uninstall the malware:

Open the file:

/ Macintosh HD / System / Library / LaunchDaemons / com.apple.logind.plist

if the system is Italian:

/ Macintosh HD / System / Library / LaunchDaemons /

Open the file:

“com.apple.logind.plist”

and if this file is actually infected by this trojan, you will have the following content:


Note: Since this file is located in a system directory, you may need a tool like “TextWrangler” ,  “TextEdit” or “Dashcode”, to be able to successfully authenticate and modify the file.

If the file “com.apple.logind.plist”  is  modified by the Trojans will need to edit the file with the following:

Delete the file / usr / sbin / logind
Then see if the job rogue logind was installed on your system. In the Finder, choose “Go to Folder” to go from the menu and then type  /usr/sbin  in the text field. Finder should open the hidden system directory (if enabled dale system preferences “displays files and folders hidden and system”), in which you can find and remove the file called “logind” if it is present. When removed, the system will ask for an administrator password, then provide and then delete the file.

The “Game is done” , and without spending a cent on expensive anti-virus procedures reported without a real depth about it.

Personal considerations:
I am thrilled every time I read articles and interviews in national newspapers that say phrases such as:
Even Mac users targeted“, which aim, often involuntary, alarms of a community of users is in no in danger.
This threat to Mac users, like all users of any system, it is only their unscrupulous behavior on the Internet.

Although Mac OSX user is much more protected than other users of consumer systems owners, since they have a system based on architecture similar to that of Unix and for which no real risk of the virus.

But all of us, the more expert at the very least, we must pay attention to the behavior, not to enable or suspicious files follow the rules in the Anti-Phishing  through a computer connected to the internet you may inadvertently enter sensitive information such as passwords, at web sites that are official but in reality  evil clones are artfully prepared by criminals.

In fact, the Trojans tsunami.osx we mentioned it to the user as a pdf document which contains perhaps an article in Chinese. As soon as the unsuspecting user opens the file, it will attempt to start the installation process, this installation will be ‘a real hidden opening pdf document that will distract the user. At this point the trojan / malware, and shall complete the installation will place the “Trojan horse” on your system.

So a Trojan is not ‘a virus but a procedure that we install, because we fooled ..

Take care!

 


Prendendo spundo dall’articolo dal sito Neven Mrgan’s Tumbl :

Immaginiamo di voler disegnare l’icona per un’applicazione IOS. L’applicazione è universale, così dovrebbe funzionare su tutti gli iPhone (e iPod Touch), e su iPad.

I designer sono abituati a progettare icone in varie dimensioni.

Ecco un tipico file PSD per un’icona IOS:

Questa immagine è basata sul file icone in PSD iPhone di Sebastiaan de With, un documento che viene spesso aggiornato.
Si noti che le icone avranno una maschera arrotondata.

Riassumiamo tutte le diverse dimensioni delle icone e come vengono utilizzate:

1). 57 px, iPhone – il classico.
2). 72 px, iPad
3). 114 px, iPhone 4 – assicurarsi che la propria icona risplenda sul Retina Display.
4). 512 px, iTunes – Usato in iTunes e App Store, dove è mostrato in dimensioni fino a 175 px. Purtroppo, non è possibile fornire direttamente la versione 175 px .
5). 29 px, Impostazioni iPhone / Spotlight, Impostazioni iPad – utilizzati in queste visualizzazioni tabella. Minore, ma pur sempre importante!
6). 48 px, Spotlight iPad – Yup, il dispositivo iPad utilizza una dimensione diversa per Spotlight e Impostazioni. Questa dimensione è controversa! Apple docs effettivamente sostiene che l’icona è di 50 px, ma poi c’è questa nota: la dimensione visiva finale di questa icona è di 48 x 48 pixel. iPhone OS trim 1 pixel da ogni lato del disegno e aggiunge un’ombra. Assicurati di tener conto di questo, come si progetta la propria icona.
7). 58 px, iPhone 4 Impostazioni / Spotlight – necessario preparare entrambe le versioni 57 e 58 px , sara’ complicato allineare tale icone se c’è una linea che nel mezzo…
8). 64 px icona del documento – per applicazioni IOS in grado di fornire le icone dei documenti. Benche’ non sia ancora ben chiaro come utilizzare questa ma viene segnalata da apple e non è una cattiva idea iniziare a pianificare subito il suo utilizzo.
9). 320 px icona del documento.
10. Apple consiglia almeno 2 nuovi formati per iPad futuri, 144 px e 96 px.

La tabella riepilogativa ufficiale Apple, contiente i requisiti da rispettare:

Splashscreen (richiesta)320 x 480
640 x 960 (alta risoluzione)Modalità portrait: 768 x 1004
Modalità landscape: 1024 x 748

Descrizione Dimensioni per iPhone e iPod touch (in pixels) Dimensioni per iPad (in pixels)
Icona Applicazione (richiesta) 57 x 57
114 x 114 (alta risoluzione retina)
72 x 72
Icona per App Store (richiesta) 512 x 512 512 x 512
Icona per risultati ricerche Spotlight e Impostazioni (raccomandata) 29 x 29
58 x 58 (alta risoluzione)
50 x 50 per i risultati Spotlight
29 x 29 per le Impostazioni
Icona Documenti personalizzati dell’app (raccomandata) 22 x 29
44 x 58 (alta risoluzione)
64 x 64
320 x 320
Icone per WebApp e siti web (raccomandata per i custom document types) 57 x 57
114 x 114 (alta risoluzione)
72 x 72
Icone per Toolbar e Navigation Bar (opzionale) circa 20 x 20
circa 40 x 40 (alta risoluzione)
circa 20 x 20
Icone TabBar (opzionale) circa 30 x 30
circa 60 x 60 (alta risoluzione)
circa 30 x 30
Icona Newsstand per App Store (richiesta per Newsstand apps) Almeno 512 pixel sul lato più lungo Almeno 512 pixel sul lato più lungo

Nota Apple: Per tutte le immagini e le icone, il formato PNG è raccomandato.
La profondità di bit standard per le icone e le immagini è di 24 bit (8 bit ciascuno per rosso, verde e blu), più un 8-bit canale alfa.
Non è necessario vincolare la palette di colori web-safe. Sebbene sia possibile utilizzare la trasparenza alfa nelle icone create per barre di navigazione, barre degli strumenti e le barre sulla scheda, non usare in icone delle applicazioni.

Nota: e si sta lavorando su un icona webapp, Apple sembra fornire una singola immagine a 128 px che poi viene ridotta.

Solitamente le icone sono progettate con un obiettivo in mente.
Le piccole icone sono normalmente delle caricature, anche se tutte le icone potrebbero essere disegnate in vettoriale, la dimensione maggiore non sarebbe mai “scalata” bene.

Ecco l’icona per la cartella Immagini in Mac OS X:

Si noti che il ridimensionamento lavora per circa 64 px, dopo di che, le forme devono essere ridisegnate, più semplici e chiare, in modo che si possano leggere.
Creare l’icona grande come vettoriale non aiuta nelle dimensioni più piccole. Con un display ad alta risoluzione, infatti, fanno di questo problema è ancora più evidente perché un 64 px di oggi domani sara’ 128 px.

Quindi le icone he dovrebbe essere disegnate più grandi, e in vettoriale – in Illustrator o shape layers di Photoshop. Notiamo he l’utilizzo di Texture puo’ risultare frustrante dato che gli adeguamenti pixel devono essere fatti a manualmente. Il designer fondamentalmente desidera avere una versione dell’icona scalabile all’infinito.

Icona Applicazione

L’icona dell’applicazione è quella che appare nella schermata home di iPhone, iPod o iPad ed è quella che premiamo  per avviare l’ applicazione.

E’ necessario creare differenti versioni dell’ icona applcazione  per essere visibile sul device:

  • 57 x 57 pixels (Iphone3)
  • 114 x 114 pixels (alta risoluzione per device con retina display iPhone4)
  • 72 x 72 pixels (per iPad)

Nel realizzare questo tipo di icona dovremo tener presente che iOS aggiungerà per noi:

  • Angoli arrotondati
  • Ombra
  • Effetto riflesso (puo’ essere rimosso inserendo la chiave “Icon already includes gloss and bevel effects” nel file “…Info.plist” della nostra applicazione)

Icona App Store o Artwork

Per l’Artwork l’icona ha dimensioni 512 x 512 pixel e verrà mostrata nell’App Store. Questa icona, non deve essere necessariamente identica all’icona dell’applicazione, e, viste le dimensioni si puo’  arricchire con maggiori dettagli, tenendo però conto che questra dovrà richiamare lo stile e i colori si quella dell’applicazione stessa.

Questa icona sarà mostrata nella libreria iTunes, insieme a tutte le altre applicazioni scaricate, installate e sincronizzate con i dispositivi Apple interessati, e’ quindi necessaria anche per le distribuzioni Ad-Hoc (in-house –  fuori dall’App Store)

Inoltre questo tipo di icona, puo’ essere utilizzato da iOS quando nella vostra app avete documenti personalizzati e non avete implementato l’apposita icona dedicata a questo scopo.

Icona per risultati ricerche Spotlight e Impostazioni

In assenza di queste icone  iOS modificherà direttamente l’icona della vostra app riducendola e mostrandola, e quindi disegnarle può rendere tutto più gradevole e visibile.

Per iPhone e iPod Touch l’icona sarà la stessa, sia per i risultati delle ricerche spotlight che per le impostazioni:

  • 29 x 29 pixels
  • 58 x 58 pixels (alta risoluzione retina display iPhone 4)

Per iPad bisogna prevedere sempre due icone diverse, poiche’ le dimensioni cambiano per icona risultati ricerche e icona nelle impostazioni:

  • 29 x 29 pixels (per le impostazioni)
  • 50 x 50 pixels (per i risultati delle ricerche fatte con spotlight)

Attenzione, la dimensione reale visualizzata di quest’ultima icona sarà 48×48 pixel.  poiche’ iOS taglierà 1 pixel per lato dalla nostra realizzazione grafica per aggiungere l’ombra.

Icona Documenti personalizzati dell’applicazione

Apple prevede di utilizzare l’icona dell’applicazione , modificandola automaticamente, da destinare a questo tipo di uso quando non e’ presente una versione apposita.

Di seguito le dimesioni per le Versioni per iPhone e iPod Touch:

  • 22 x 29 pixels
  • 44 x 58 pixels (alta risoluzione)

Ovviamene anche in questo caso le icone sono  in formato .PNG  e iOS aggiungerà la tipica ombra.

Versioni per iPad:

  • 64 x 64 pixel
  • 320 x 320 pixel

Ricordiamo che e’ necessario lasciare dello spazio per gli effetti grafici che inserirà automaticamente iOS.

Per creare l’icona 64 x 64 pixel Apple suggerisce questi 4 passi:

  • Creare un’immagine di dimensioni 64 x 64 pixel in formato PNG
  • Inserire (tramite ad esempio le linee guida) un margine superiore di 1 pixel nella parte superiore
  • Inserire un margine inferiore di 4 pixel
  • Inserire un margine di 10 pixel a sinistra e a destra nell’immagine

L’area utile ottenuta sarà di 44×59 pixel. iOS inserirà l’effetto “page curl” in alto a destra e la sfumatura.

Per la versione iPhone 3 da 320 x 320 pixel dovrete lasciare:

  • 5 pixels di margine nella parte superiore
  • 20 pixels di margine nella parte inferiore
  • 50 pixels di margine nei lati dell’immagine

In questo caso l’area utile è inferiore e sarà pari a 220 x 295 pixel e c’e’ da considere che l’effetto “page curl” oscurerà parte della grafica.

Icone per WebApp e siti web

Vale quanto scritto per l’icona dell’applicazione stessa. La differenza sta nel fatto che potrete disattivare tutti gli effetti automatici aggiunti da iOS semplicemente rinominando il file in “apple-touch-icon-precomposed.png” prima di pubblicarlo online (procedura compatibile da iOS 2.0 in poi).

Icone per Navigation Bars, Toolbars, e Tab Bars

Apple raccomanda  e suggerisce di utilizzare bottoni e icone standard all’interno delle proprie applicazioni iOS. E’ possibile comunque disegnare le proprie icone anche per questo tipo di uso quando  le funzionalità della nostra app non sono standard.

Nel caso in cui decidessimo di realizzare delle nostre icone dobbiamo tener presente che:

  • L’ icona deve essere semplice, troppi dettagli potrebbero rendere la rappresentazione irriconoscibile e l’uso dell’app risulterebbe meno intuitivo.
  • Le icone non devono poter essere troppo simili a quelle standard, nel caso usate quelle già realizzate e fornite da Apple.
  • Le icone devono essere fortemente riconoscibili e in nessun caso devono essere offensivi per gli utenti internazionali delle vostre app.
  • Non rappresentare icone di prodotti Apple protetti da copyright. I diritti di autore faranno in modo che la vostra app non venga accettata nello store.
  • Utilizzare come colore il bianco unito alla corretta trasparenza
  • Non includere ombre
  • Usare l’anti-aliasing
  • Gli angoli smussati devono essere di 90°

Le dimensioni delle icone per toolbar e navigation bar sono:

Per iPhone e iPod Touch:

  • Circa 20 x 20 pixels
  • Circa 40 x 40 pixels (in alta risoluzione – Retina display iPhone 4)

Per iPad:

  • Circa 20 x 20 pixels

Le dimensioni delle icone per le Tab Bar:

Per iPhone e iPod touch:

  • Circa 30 x 30 pixels
  • Circa 60 x 60 pixels (in alta risoluzione – Retina display iPhone 4)

Per iPad:

  • Circa 30 x 30 pixels

Nota: Non è necessario creare questo tipo di icone utilizzando i colori. Non è necessario studiare una versione dell’icona standard a item premuto, iOS aggiungerà l’effetto autonomamente. Gli effetti aggiunti saranno automatici e non e’ possibile cambiare il loro aspetto.


ICONE STANDARD PER LE TabBar

Icona Nome Significato
Bookmarks Mostra i “segnalibri” dell’applicazione
Contacts Mostra i contatti
Downloads Mostra i download
Preferiti Mostra i preferiti
Featured Mostra contenuto in evidenza dell’applicazione
History Mostra la storia delle azioni degli utenti
More Mostra ulteriori Tab Bar Item
MostRecent Mostra gli oggetti recenti
UITabBarMostViewed MostViewed Mostra gli oggetti più popolari
Recents Mostra gli oggetti recenti visualizzati in un periodo definito
Search Entra in modalità ricerca
TopRated Mostra gli elementi più votati dagli utenti

 

Nomi dei file di icona

Di seguito un elenco per  nominare tutti i file di icona, basterà utilizzare questi nome file per far in modo che iOS riconosca quale mostrare. Il nome e’ case sensitive, quindi fare attenzione a maiuscole e minuscole:

  • Icon.png – Icona applicazione iPhone e iPod Touch
  • Icon@2x.png – Icona applicazione iPhone e iPod Touch in alta risoluzione
  • Icon-72.png – Icona applicazione iPad
  • Icon-Small.png – Icona risultati ricerche spotlight (in iPhone e iPod) e Impostazioni (tutti i dispositivi).
  • Icon-Small@2x.png – Icona risultati ricerche spotlight (in iPhone e iPod) e Impostazioni (tutti i dispositivi) in alta risoluzione
  • Icon-Small-50.png – Icona risultati ricerche spotlight in iPad

Splash

Apple suggerisce che per migliorare l’esperienza dell’utente è utile nella fase di lancio dell’applicazione stessa mostrare una splashscreen. La splash screen dovrebbe essere sempre un’immagine simile alla schermata che apparirà a caricamento avvenuto.

Molti inseriscono il proprio logo o un’immagine di presentazione e Apple approva spesso queste app, ma bisogna tener conto delle sue linee guida per non rischiare imbarazzanti rifiuti in fase di review.
In linea di massima, se il  logo fa parte della grafica della prima schermata che verrà visualizzata  è consigliato inserirlo anche nella splashscreen.

Per la splashscreen di iPhone e iPod touch le dimensioni , che includono l’area di 20 px (40px per retina display) dedicata alla Status Bar:

  • 320 x 480 pixels
  • 640 x 960 pixels (alta risoluzione)

Le dimensioni della splashscreen per  applicazioni iPad non includono l’area occupata dalla Status Bar e le dimensioni sono:

  • 768 x 1004 pixels (modalità portrait)
  • 1024 x 748 pixels (modalità landscape)

Eì necessario sempre inserire una splashscreen per ogni tipo di orientamento previsto  (portrait e landscape) .

Apple Developer Reference

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close