Flipswitch: Difference between revisions

From iPhone Development Wiki
(Explanation on how layers work)
No edit summary
Line 105: Line 105:
It is possible to use a <code>layer</code> for each state by creating new <code>layers</code> arrays named <code>layers-on</code>, <code>layers-off</code> or <code>layers-indeterminate</code>.
It is possible to use a <code>layer</code> for each state by creating new <code>layers</code> arrays named <code>layers-on</code>, <code>layers-off</code> or <code>layers-indeterminate</code>.


''For more information, see [https://github.com/a3tweaks/Flipswitch/blob/master/FSSwitchPanel.m#L307 here]''
''For more information, see [https://github.com/a3tweaks/Flipswitch/blob/master/FSSwitchPanel.m#L307 this resource]''


== External links ==  
== External links ==  

Revision as of 06:49, 21 January 2014

Flipswitch
Cydia Package
Developer Ryan Petrich, Jack Willis
Package ID libflipswitch
Latest Version 1.0.2


libflipswitch is a library used to implement a centralized toggle system.

How to make a new switch

Save this NIC template to the $THEOS/templates/iphone directory and call $THEOS/bin/nic.pl to get a premade switch.

Add instructions about writing code and creating glyphs.

Secondary action

In the file Resources/Info.plist you can find the key "alternate-action-url", which will enable you to open a URI when the secondary action of the switch is invoked, in case it is not implemented in code. The default value is "prefs:".

How to make a template bundle

These bundles contain information about how a switch glyph (the image that the user sees for a given switch) is rendered when it is used in a button returned by the appropriate method of the FlipSwitch panel. Bundles contain an Info.plist file and optionally image files. Here is an example of an Info.plist, taken from SwitchIcons:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>CFBundleDevelopmentRegion</key>
        <string>English</string>
        <key>CFBundleIdentifier</key>
        <string>com.rpetrich.switchicon.icon-template</string>
        <key>CFBundleInfoDictionaryVersion</key>
        <string>6.0</string>
        <key>CFBundlePackageType</key>
        <string>BNDL</string>
        <key>CFBundleShortVersionString</key>
        <string>1.0.0</string>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
        <string>1.0</string>
        <key>DTPlatformName</key>
        <string>iphoneos</string>
        <key>MinimumOSVersion</key>
        <string>2.0</string>
        <key>width</key>
        <integer>59</integer>
        <key>height</key>
        <integer>60</integer>
        <key>layers</key>
        <array>
            <...>
        </array>
</dict>
</plist>

Keys not specified in the following table can use the same values as the example given.

key type meaning
CFBundleIdentifier string Template bundle identifier.
width integer Width of the icon.
height integer Height of the icon.
layers array ... of dictionaries Change visuals of switch glyph.

layers array can contain dictionaries with the following keys:

key type meaning range of values default value depends
type string Layer type. "image", "glyph" - -
opacity float Alpha value for current layer. 0.0 to 1.0 1.0 -
x float X value for offset position. - 0.0 -
y float Y value for offset position. - 0.0 -
fileName string Image filename without extension. - - -
blur float Blur value for current layer. 0.0 to 1.0 0.0 type = "glyph"
size float Glyph size. - 0 type = "glyph"
state string Switch state filter. "on", "off", "indeterminate" - type = "glyph"
cutout BOOL Cutout mask flag. - NO type = "glyph"
cutoutX float X offset for cutout mask. - 0.0 type = "glyph" && cutout = YES
cutoutY float Y offset for cutout mask. - 0.0 type = "glyph" && cutout = YES
cutoutBlur float Blur for cutout mask. 0.0 to 1.0 0.0 type = "glyph" && cutout = YES
color string Hex color for current layer. "#000000" to "#ffffff" "#000000" type = "glyph" && filename = nil

layers are applied to the button one over the other. If type is "image", the current layer will draw the image found in filename. Best use of this layer could be as a background. If type is "glyph", the current layer will use the switch glyph as a mask. When state is present, the layer will select the glyph for said state. If cutout is true, the layer will be composed of only the glyph's borders.

It is possible to use a layer for each state by creating new layers arrays named layers-on, layers-off or layers-indeterminate.

For more information, see this resource

External links