Titanium JIRA Archive
Titanium SDK/CLI (TIMOB)

[TIMOB-16294] iOS: ToImage() functionality on TabbedBar/ButtonBar removes text of the selected tab in image

GitHub Issuen/a
TypeBug
PriorityLow
StatusClosed
ResolutionHold
Resolution Date2014-02-05T22:44:53.000+0000
Affected Version/sRelease 3.2.0
Fix Version/s2014 Sprint 03, 2014 Sprint 03 API
ComponentsiOS
LabelssupportTeam
ReporterRupesh Sharma
AssigneeIngo Muschenetz
Created2014-01-23T09:24:54.000+0000
Updated2017-03-17T18:16:26.000+0000

Description

Description

When we implement ToImage functionality over a view which contains a tabbedbar/buttonbar, then the resulting image that is generated doesn't show the text on the selected index of the tab.

Steps to Reproduce

1. Run the app in simulator 2. tap on the button "Click me" 3. Go to the application documents directory in iphone simulator folder on the path "/Users//Library/Application Support/iPhone Simulator/7.0/Applications//Documents" 4. check out the image "test.png"

Test Code

// this sets the background color of the master UIView (when there are no windows/tab groups on it)
Titanium.UI.setBackgroundColor('#000');

// create tab group
var tabGroup = Titanium.UI.createTabGroup();

//
// create base UI tab and root window
//
var win1 = Titanium.UI.createWindow({

    title:'Tab 1',
    backgroundColor:'#fff'
});
var tab1 = Titanium.UI.createTab({

    icon:'KS_nav_views.png',
    title:'Tab 1',
    window:win1
});
 var buttonbar = Titanium.UI.createButtonBar({
            left : 20,
            right : 20,
            height : 24,
            labels : [L('spc_1d'), L('spc_1m'), L('spc_3m'), L('spc_6m'), L('spc_1y'), L('spc_3y'), L('spc_5y')],
            style : Titanium.UI.iPhone.SystemButtonStyle.BAR,
            backgroundColor : '#86c037',
           index:3,
           font:{fontWeight:'bold'}
 });
        win1.add(buttonbar);

var button = Ti.UI.createButton({
    title:"click me",
    text:"click here",
    backgroundColor:'black',
    top:20
});
win1.add(button);
button.addEventListener("click",function(e){
    Ti.API.info("you got clicked");
    var imageFile = Ti.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory, 'test.png');
        imageFile.write(win1.toImage());
});

//
// create controls tab and root window
//
var win2 = Titanium.UI.createWindow({

    title:'Tab 2',
    backgroundColor:'#fff'
});
var tab2 = Titanium.UI.createTab({

    icon:'KS_nav_ui.png',
    title:'Tab 2',
    window:win2
});

var label2 = Titanium.UI.createLabel({
    color:'#999',
    text:'I am Window 2',
    font:{fontSize:20,fontFamily:'Helvetica Neue'},
    textAlign:'center',
    width:'auto'
});

win2.add(label2);

//
//  add tabs
//
tabGroup.addTab(tab1);

tabGroup.addTab(tab2);

// open tab group
tabGroup.open();

Attachments

FileDateSize
test.png2014-01-23T09:26:21.000+000020543

Comments

  1. Vishal Duggal 2014-02-05

    We use renderInContext method to create a UIImage object from a UIView. In iOS7 iOS has changed the way the selected segment is displayed. The selected segment now has a compositingFilter (which older versions of iOS did not). renderInContext implementation does not support the entire Core Animation composition model. compostingFilter is one of the unsupported elements. Going to mark this as "HOLD" until we have a good alternative to renderInContext.

JSON Source