在Interface Builder和/或Storyboard中访问“文本样式”
在我的一个应用程序中,我有一个带有不同文本样式方法的样式文档,例如:
+(UIFont*)h1{ return [UIFont fontWithName:@"Helvetica" size:48.0]; }
然后,在我的每个视图控制器的viewDidLoad
方法中,我以编程方式设置文本样式。 保持应用程序样式一致且易于调整是一种非常好的方式。
这是我的问题:是否有任何方法让XIB文件/故事板反映这些文本样式? 如果没有,是否有任何方法来实现类似的function(即,所有样式定义在一个地方,并从那里拉动XIB / Storyboard元素)? 谢谢阅读。
编辑:
为了澄清,这是最终的结果:
- 在项目中某处定义一些常量文本样式,如h1,h2,p。 每个文本样式都有自己的字体,字体大小,颜色等等。
- 能够在我的各种视图中将
UILabels
的样式设置为这些文本样式中的任何一种。 这可以在代码中,在Interface Builder中完成(例如,在Luanbuild议的用户定义的运行时属性中),或者在任何地方。 - 能够在Interface Builder / Storyboard中看到应用于每个UILabel的样式, 而无需每次运行应用程序 。
好的,所以事实certificate这是可能的! 就是这样:
-
添加一个样式类,您可以将所有样式信息放在一个位置:
import UIKit class MyStyles: NSObject { static func fontForStyle(style:String)->UIFont{ switch style{ case "p": return UIFont.systemFontOfSize(18); case "h1": return UIFont.boldSystemFontOfSize(36); case "h2": return UIFont.boldSystemFontOfSize(24); default: return MyStyle.fontForStyle("p"); } } }
-
创build你想实现样式的任何对象的子类,比如说UILabel,然后input下面的代码:
import UIKit @IBDesignable class MyLabel: UILabel { @IBInspectable var style:String="p"{ didSet{self.font=MyStyle.fontForStyle(style)} } }
- 在Interface Builder中将UILabel添加到您的视图中,并将其类设置为MyLabel。 然后在属性检查器中,您会看到一个样式字段,您可以在其中键入h1,h2或其他字符,标签的字体将立即更新。 想要更改所有的h1标签大小为48? 只需更新MyStyles,即可立即看到XIB / Storyboard中的更改。
这将是一个巨大的节省时间,我希望你们中的一些人也觉得它有用!
我真的不明白你的意思。 但是你想从Interface Builder中设置自定义的“文本样式”,你可以这样做。 为UILable
1,创build类别UILabel + MyCustomStyle。
在UILabel + MyCustomStyle.h
#import <UIKit/UIKit.h> @interface UILabel (MyCustomStyle) @property (nonatomic, copy) NSString *mTextStyle; @end
在UILabel + MyCustomStyle.m
#import "UILabel+MyCustomStyle.h" @implementation UILabel (MyCustomStyle) -(NSString *)mTextStyle { return self.text; } -(void)setMTextStyle:(NSString *)txt{ if ([txt isEqualToString:@"h1"]) { // custom style h1 code self.font = ...; }else if ([txt isEqualToString:@"h2"]){ // custom style h2 code self.font = ...; } //... more custom style }
2,在IB中分配文本样式
- iOS:UIPageViewController – 使用button跳转到下一页
- 使用无故事板和显示的iOS UI开发– Ivan Jiang –中
- 如何确定一个数组是否包含Swift中另一个数组的所有元素?
- UICollectionView UseLayoutToLayoutNavigationTransitions具有不同的数据源
- WebCore :: UserGestureIndicator :: processingUserGesture中的EXC_BAD_ACCESS(SIGSEGV)
- 使用Swift(Pre Swift 3)通过引用调用与按值调用
- UIViewController init vs initWithNibName:bundle:
- 如何禁用MKMapView上的用户交互?
- 在iOS中使用Javascript复制到剪贴板