GithubHelp home page GithubHelp logo

TabBarItem in XML about interfacss HOT 4 CLOSED

tolo avatar tolo commented on August 22, 2024
TabBarItem in XML

from interfacss.

Comments (4)

tbrannam avatar tbrannam commented on August 22, 2024

I noticed that UITabBarItem was declared style-able in the stylesheet wiki. I added a Naive implementation in the parser:didStartElement:

else if ( [viewClass isSubclassOfClass:UITabBarItem.class] ) {
    viewBuilderBlock = ^UIView* (UIView* superview) {
        UITabBarItem *tabBarItem = nil;
        if ([self.fileOwner respondsToSelector:@selector(tabBarItem)]){
            tabBarItem = [self.fileOwner tabBarItem];
            tabBarItem.styleClassISS = styleClass;
        }
        return (UIView *)tabBarItem;
    };
    addSubview = NO;
}

but I observe that UITabBarItem is not a UIView, so all the UIView(InterfaCSS) category methods do not apply -- changing that category to NSObject(InterfaCSS) seems possible, but that seems like a very big change.

I'll note also that placing the tabbaritem in the xml also creates a condition that requires that the view must be loaded in order for the tabbaritem to be registered. This is different than what happens with regular nib. The UITabBarItem from a nib is loaded before loadView is loaded.

Did you have thoughts about how UITabBarItem and UINavigationItem would be declared and styled through markup?

from interfacss.

tbrannam avatar tbrannam commented on August 22, 2024

If I load the CSS before loadView I can accomplish styling of the tabbar item by overriding

- (UITabBarItem *)tabBarItem
{
   [self loadStyles];
   UITabBarItem *tabBarItem = [super tabBarItem];
   tabBarItem.styleClassISS = @"foo";
   [[InterfaCSS interfaCSS] applyStyling:tabBarItem includeSubViews:NO force:YES];
   return tabBarItem;
}

from interfacss.

tolo avatar tolo commented on August 22, 2024

You can actually accomplish this by adding [[InterfaCSS sharedInstance] addStyleClass:@"foo" forUIElement:self.tabBarItem]; to loadView of the view controller. Updated the sample code to illustrate this.

Tab bar items and navigation items (when used with UITabBarController/UINavigationController) are not something I've planned to add support for in the view definition file, since those require a bit of special handling. I may possibly add support for standalone toolbars and tab bars though.

The UIView(InterfaCSS) category is actually only a convenience wrapper for the corresponding methods in class InterfaCSS (that accepts objects of any class), and it exists because almost all styling of an application will be done on a UIView subclass (and it also felt odd to "pollute" every single class in the platform with styling methods).

from interfacss.

tbrannam avatar tbrannam commented on August 22, 2024

Awesome - thanks.

from interfacss.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.