Tag: xib

如何在XCode中轻松创建可重用的Xib

对于应用程序中的视图,拥有一个具有布局的文件和另一个具有逻辑的文件将为您节省很多时间来管理它们。 如果更改设计,则仅修改xib,如果更改逻辑,则仅更改类文件。 这是目标文件夹结构的图像: 我创建了一个存储库,使创建可重用视图非常容易。 另外,如果您想自己解决问题,我还添加了步骤。 使用MSAutoView 创建一个xib文件并向其中添加所需的布局(示例): 2.创建一个swift文件并添加一个从MSAutoView继承的类 MSAutoView具有许多自定义功能,例如以编程方式更新视图,为同一视图具有多个布局,将布局子类化等等。 您可以在这里找到项目: MaherKSantina / MSAutoView MSAutoView –创建可重用视图的简便方法 github.com 如果您发现回购有用,请不要忘了给它加注星标。 高度赞赏合作。 使用自定义解决方案 创建一个xib文件并在其中添加您的自定义布局: 创建一个从UIView继承的类 覆盖init(frame:)和init?(coder:)函数以添加将包含添加xib布局逻辑的函数: 感谢您查看本文。 如果您觉得有用,别忘了👏。

UIColor库可在代码和XIB /情节提要中访问

令人恐惧的XIBs与Code辩论一直使我感到烦恼,这是因为两者无法并肩工作,同时又无法为主题和调色板保留一个真理来源。 出于这个原因,我主要是在参数的代码方面发现问题,经常在查看带有XIB / Storyboards的100多个UI类的项目时,会发现等待着大多数中型主题的启示性迹象XCode项目。 不仅每个XIB都是使用其自己的筒仓字体和颜色集创建的,而且甚至不一致。 有些人盯着眼睛,有些人只是放弃了,有些人却久违了AB测试的鬼魂……而任何人都被要求在应用程序中的每个按钮上绕一组角或更改特定颜色,因为它不太正确品牌的绿色阴影再也不会使人感到恐惧。 如果没有适当的计划和沟通,维护XIB就是一场噩梦。 有一个答案(至少对于UIColor而言 ),它在.xcassets内的ColorSets似乎未得到充分利用…… Assets.xcassets>快速设置新颜色 产生一个相对简单且可维护的颜色库。 我个人的喜好是将其更改为8Bit Hexadecimal,以说出与大多数图形设计师相同的语言。 在那里…去任何XIB或Storyboard,您都会找到定义的颜色… 在代码中, 只需添加带有警告的UIColor(named:“ background”)就很简单,可惜这些都是可选的。 为了避免在每一个转弯处添加问号并防止将来使用魔术弦,我创建了一个小的辅助扩展程序… 现在只需要让bgColor:UIColor = .colorSet(.background)即可 。 也许这并不是解决我们困境的完整答案,但即使是Code vs XIB阵营中任一派中最坚定的支持者,也可能会达成共识。 它是可维护的,易读的,而且最重要的是,它是调色板的唯一事实来源。 ●●●●

Swift协议可轻松创建可重用的基于XIB的自定义视图

在我的工作中使用了很多在Interface Builder中设计的自定义视图,我发现自己重写了相同的代码以使XIB中的视图无效。 然后,在阅读了一些文章之后,我发现协议可能是实现此目的的最佳方法(它有助于编写更少的代码)。 这里我们有协议: 使用此协议,自定义视图在被包含它的情节提要实例化时将自动从关联的XIB加载其自身的内容,而无需编写任何其他代码。 这将只是一行代码。 一种 当用作XIB的文件的所有者时,UIView子类可以符合此协议。 笔尖需要与类名称相同的名称,并且需要位于该类的束中。 如何使用: 声明您的自定义视图符合NibFileOwnerLoadable协议。 然后,您应该使用loadNibContent()覆盖init?(coder:) ,以便将其关联的XIB作为子视图加载并自动添加约束。 因此,假设您的自定义UIView子类名为SearchView,则代码将为: 最后一堂SearchView:UIView,NibFileOwnerLoadable { … 需要初始化吗?(编码器aDecoder:NSCoder){ super.init(编码器:aDecoder) loadNibContent() } } 在无法使用loadNibContent()的情况下(例如,因为您需要对子视图进行特定的配置),无论如何,您都可以使用此协议通过使用InstantiateFromNib()来仅实例化XIB的视图。 谢谢你的时间! 希望本文对您有所帮助。 在Twitter上联系: stefanofrosoni

iOS开发课程:界面构建器,情节提要和基本UI类

什么是IB? 如何建立使用者介面? 有哪些基本的UI元素可用? 如何建立自定义UI? 如何使用某些视图控制器构建故事? 让我们在快速指南中回答这些问题! 创建一个新的Single View App项目。 热键:shift + Command + N 什么是IB? Xcode中的Interface Builder编辑器使无需编写任何代码即可轻松设计完整的用户界面。 只需将窗口,按钮,文本字段和其他对象拖放到设计画布上,即可创建可运行的用户界面。 苹果 好的,现在我们有了一个新项目,该项目具有默认文件集和IB定义。 让我们继续。 转到项目导航器并打开Main.storyboard文件。 故事板是iOS应用程序用户界面的直观表示,显示内容的屏幕以及这些屏幕之间的连接。 故事板由一系列场景组成,每个场景代表一个视图控制器及其视图。 场景由segue对象连接,这些对象代表两个视图控制器之间的过渡。 大。 现在我们在Interface Builder上。 好。 我们可以做些什么? 现在,我们将逐步发现每个步骤。 如何在视图中添加新元素? 只需按: Shift + Command + L 选择所需的元素并将其拖动到viewController。 凉。 您的第一个视图已出现。 查看throw Attributes Inspector(在右侧)。 这是UIView属性。 *它是为每个其他UI类元素设置的唯一属性。 好的,让我们将视图与我们的课程联系起来。 显示助理编辑 选择自动模式以显示IB上显示的班级代码 在“属性”检查器中打开“连接编辑器”选项卡(在最后一次点击的右侧) 选择引荐出口并将其拖动到类中 打印IB出口名称 因此,现在我们在代码中很少引用该视图。 打开ViewController.swift并编写代码以更改contentView背景颜色。 结果,在故事板上有第二个ViewController。 […]

即使不使用自定义的XIB,在awakeFromNib中为UICollectionViewCell操作IBsockets?

下面的代码用于操作和configuration子类UICollectionViewCell的IBsockets。 然而,在这个阶段,IB级的商店还没有连接。 其他SO这样的postbuild议使用awakeFromNib来操纵IB网点,但是在所有的答案中,问题都会涉及一个自定义的XIB。 但是,这个子类不使用自定义的XIB。 即使没有使用自定义XIB,使用awakeFromNibconfigurationIBsockets是否仍然正确? override init(frame: CGRect) { super.init(frame: frame) doInit(frame) } required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) doInit(frame) } private func doInit(frame: CGRect) { }

IOS用xib文件inheritance一个UIViewController

我有这个问题: 在我的VCTemplate类(带.h,.m和.xib文件)中,我创build了我的基类模板(在我的项目中有很多类似的viewcontroller,只有一些内容是不同的。 在此之后,我已经在.xib文件中抹杀了一个UIWebView,一个UITabBar … 在这之后,我创build了从VCTemplateinheritance的新的viewcontroller: #import "VCTemplate.h" @interface VCFirstView : VCTemplate 和代码工作正常(一些函数编写的VCTemplate是好的,但接口不支持VCTemplate中创build的接口,考虑到我的VCFirstView只包含.h和.m,没有.xib文件 提前致谢

使用xib以编程方式设置IBOutlet和文件所有者会导致符合键值编码的错误

我创build一个xib。 xib的文件所有者是一个名为PackageTrackingListViewElement的自定义类。 PackageTrackingListViewElement包含一个名为contentView的IBOutlet属性。 界面生成器中的几个视图连接到名为PackageTrackingListViewElement的自定义类的IBOutlet属性。 我尝试从xib初始化一个对象。 PackageTrackingListViewElement *element2 = [[[NSBundle mainBundle] loadNibNamed:@"PackageTrackingListViewElementXib" owner:nil options:nil] objectAtIndex:0]; [element2.labelDate setText:@"12/14/15"]; [element2.labelLocation setText:@"Berkeley, California"]; 在此之后,我将element2对象添加到UIStackView。 我应该在 loadNibNamed 设置文件所有者, 这样我就不会得到xib的所有者不符合我试图访问的属性的键值兼容的错误? 我的错误是[<UIStackView 0x165ddc80> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key contentView.' 当我尝试设置stackView作为xib的所有者。 我知道这当然是错的,但是我不能把没有创build的对象设置成自己的主人。 我不明白该怎么做。

UIButton上的圆angular边框消失了

我有一个四舍五入的UIButton通过XIB初始化的自定义表格视图单元格,它工作正常。 我只是注意到,边框,一个圆形的粉红色边框,现在不出现。 我试着添加一些代码来设置awakeFromNib函数的属性,但是这也没有办法。 – (void)awakeFromNib { [super awakeFromNib]; [self setupProfileView]; self.contentView.backgroundColor = [UIColor colorWithWhite:0.97f alpha:1.0f]; self.selectionStyle = UITableViewCellSelectionStyleNone; _initialLabel.layer.cornerRadius = _initialLabel.frame.size.width/2; _initialLabel.layer.borderWidth = 2; _initialLabel.layer.borderColor = [UIColor colorWithRed:223.0/255.0 green:158.0/255.0 blue:255.0/255.0 alpha:1].CGColor; NSLog(@"on profile table view cell border width is %f and radius is %f and color is %@", _initialLabel.layer.cornerRadius, _initialLabel.layer.borderWidth, _initialLabel.layer.borderColor); } 上面打印出我期望的(正确的颜色+半径+宽度),但它不显示在视图中。 这是_initialLabel代码中的唯一参考,所以它不会被设置在代码中的其他地方。 有没有人遇到这个,知道一个修复? […]

自定义节标题formsxib的错误宽度

我无法使视图的宽度适应不同屏幕大小的表视图的大小 这是我在viewDidLoad()上的代码 view.tableView.registerNib(UINib(nibName: "Header", bundle: NSBundle.mainBundle()), forHeaderFooterViewReuseIdentifier: "Header") 并在表视图委托: func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { var cell = tableView.dequeueReusableHeaderFooterViewWithIdentifier("Header") as! Header // etc } 请记住,我不想把这个在故事板,而我正在使用自动布局。 有小费吗?

如何从xib调用performSegueWithIdentifier?

我有viewController与segue secondViewController名为“toSecond”。 在viewController我加载customView.xib let myCustomView = NSBundle.mainBundle().loadNibNamed("customView", owner: self, options: nil)[0] 在这个customView我有button的行动: viewController().goToSecond() 在viewController我有这个代码的function func goToSecond() { self.performSegueWithIdentifier("toSecond", sender: self) } 但是当我按下customView中的button,我成为一个错误: viewController没有标识符“toSecond” 当我直接从viewController调用这个函数都很好! 那么,我怎样才能从我的customView调用performSegueWithIdentifier? customView源代码: import UIKit class customView: UIView { @IBAction func ToSecondButton(sender: AnyObject) { viewController().goToSecond() } } viewController源代码: import UIKit class viewController: UIViewController { … let myCustomView = NSBundle.mainBundle().loadNibNamed("customView", owner: self, options: […]