Tag: 界面生成器

我怎样才能使用自动布局(ios6 + ios7)4“和3.5”iphone屏幕的故事板?

关于构build可在4英寸和3.5英寸屏幕尺寸上工作的故事板布局,有许多问题和答案,但对于以下情形我找不到合适的解决scheme。 我使用ios6(和ios7)自动布局,我不必支持landscpae或ipad。 我有一个UIView有几个子视图,必须看起来像下面的模型。 在故事板中设置自动布局约束是很容易的,以适应任何一种屏幕尺寸。 我的问题是 – 如何使自动布局根据运行时的屏幕大小select正确的约束? 请注意,我不想使用2个不同的故事板。 在我的整个应用程序中这样做会是很多工作,我将不得不挂钩每个故事板上的所有代表,sockets和操作。 屏幕上的变化需要我做两倍的工作。 我已经尝试了2种方法使这个工作在一个故事板上,但是我对其中的任何一个都不满意。 加倍限制。 较大的约束(50)具有比较低的约束(30)更高的优先级。 这种方法的问题是,在3.5“的屏幕尺寸上,自动布局可能会select一个较低的优先级约束 – 足以满足布局 – 但留下一些高优先级的约束。 子类NSLayoutConstraint。 在这个方法中,故事板中的所有约束都被设置为NSDualLayoutConstraint。 在NSDualLayoutConstraint的初始化代码中,在运行时屏幕大小为3.5“的情况下,约束的常量更改为3_5_constant的值,但这种方法更具确定性,但在界面生成器预览中看不到3.5”布局。 如果只有界面生成器约束有一个次要的常量值,当屏幕大小为3.5“时,这将解决我的问题。所以我仍然与我的问题 – 我怎么才能正确地使用一个故事板布局子视图正确4“和3.5”屏幕尺寸?

迅速正确的方式来加载xib文件

在swift项目中加载xib文件有一些奇怪的问题。 这太令人沮丧了,因为我已经知道如何在Obj-C中做到这一点。 但是,因为迅捷是快速的,所以你不能像你这样做。:/ 所以我创build了IconTextFiled.xib和IconTextField.swift。 (扩展UITextField)在xib中,我填写Idenity检查器中的字段类和故事板中,我做一些textFields相同。 所以我们只需要从xib向init方法加载加载? 没有。 在objc我会这样做 – (instancetype)initWithCoder:(NSCoder *)coder { self = [super initWithCoder:coder]; if (self) { NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"IconTextField" owner:self options:nil]; self = [nib objectAtIndex:0]; } return self; } 所以我想,如果我翻译的速度会很快。 required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder) let nib:NSArray = NSBundle.mainBundle().loadNibNamed("IconTextField", owner: self, options: nil) self = nib.objectAtIndex(0) } […]

在Interface Builder中deviseUITableView的节标题

我有一个UITableView的xib文件,我想要使用委托方法tableView:viewForHeaderInSection:添加一个自定义节头视图。 有没有可能在Interface Builderdevise它,然后以编程方式更改它的一些子视图的属性? 我的UITableView有更多的节标题,所以在Interface Builder创build一个UIView并返回它不起作用,因为我不得不复制它,但没有任何好的方法。 存档和解除存档对UIImage不起作用,所以UIImageView将显示为空白。 另外,我不想以编程的方式来创build它们,因为它们太复杂了,所产生的代码将难以阅读和维护。 编辑1 :这是我的tableView:viewForHeaderInSection:方法: – (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { if ([tableView.dataSource tableView:tableView numberOfRowsInSection:section] == 0) { return nil; } CGSize headerSize = CGSizeMake(self.view.frame.size.width, 100); /* wrapper */ UIView *wrapperView = [UIView viewWithSize:headerSize]; wrapperView.backgroundColor = [UIColor colorWithHexString:@"2670ce"]; /* title */ CGPoint titleMargin = CGPointMake(15, 8); UILabel *titleLabel = [UILabel labelWithText:self.categoriesNames[section] […]

从nib载入自定义的UIView,包含在nib中的所有子视图都是nil?

我有一个定义视图/子视图布局的自定义UIView对象。 我的sockets是连接的,当我从initWithFrame:初始化对象的initWithFrame:一切都是按顺序的。 我遇到的问题是当我使用IBembedded到另一个笔尖的UIView ; 自定义的UIView出现,但是它所包含的子视图都没有出现 – 实际上它们的符号全部parsing为零。 我有一个非常小的initWithCoder:和awakeFromNib:实现(只是做日志logging),我的理解是,作为笔尖被反序列化的子视图至less应该在这个过程中初始化? 我自己唯一的结论就是发生了两件事情之一:要么我的sockets引用是腐败/坏,不能正常工作,要么我对从笔尖加载过程的理解是有缺陷的,我是遗漏了什么。 提前致谢! 编辑:(代码张贴为Nekto按要求…你会看到,它logging和多数民众赞成,嘿。) – (id)initWithCoder:(NSCoder *)aDecoder { if ((self = [super initWithCoder:aDecoder])) { NSLog(@"ThumbnailGridView.initWithCoder frame= %f, %f", self.frame.size.width, self.frame.size.height); } return self; } – (void)awakeFromNib { NSLog(@"ThumbnailGridView:awakeFromNib"); } 编辑2:笔尖,控制器,子视图等 笔尖:我有一个包含UIView的笔尖。 这个UIView包含一个单一的UIScrollView,里面充满了在另一个nib中定义的UIViews的网格。 (注意:这部分工作正常,因为填充是以编程方式完成的,并且使用initWithFrame:call。)这里的问题是,在调用initWithCoder:和awakeFromNib:之后,UIScrollView符号为零,所以对象只是被添加到零,没有任何反应。 如果滚动视图符号不是零,我相信这将工作。 控制器:有两个控制器可以利用它,一个是使用initWithFrame完成的:完美工作,另一个embedded作为基于笔尖的参考。 (正如在这里其他地方提到的,在IB中定义一个UIView,设置自定义类。)我遍历代码,并且该视图被正确初始化 – 只有子视图“缺失”。 这是否有助于更清楚地了解情况?

iOS:如何在界面生成器中使用自定义包中的图像?

我有一个捆绑,我把图像放在里面。 内容是: MyBundle.bundle/images/picture1.png MyBundle.bundle/images/picture2.png 我将MyBundle.bundle拖到我的项目中。 现在我可以在Interface Builder中看到这些图像,甚至可以使用它们。 但是,当我运行该应用程序,我没有看到图像。 怎么了? 谢谢,

如何在Interface Builder中创build1px行?

请注意,我正在寻找1px线,而不是1pt线。 这意味着它应该是1px而不pipe屏幕比例(在Retina设备上是0.5pt)。 我可以通过编程来完成,但是我可以在Interface Builder中完成吗? 例如我不能设置一个UIView有一个小于1的高度。 如果我可以在IB中完成,那么我不必声明一个sockets,并手动将帧设置在awakeFromNib 。