我已经创建了一个UIView子类和相应的xib文件,其中我已经布置了一些UILabels和UIImageViews.我想将这个自定义UIView的多个副本放入UIViewController.
当我这样做时,它们在界面构建器中显示为空白,并且在应用程序加载时不会显示.我需要在UIView子类上实现哪些方法才能使其工作?
我通过编辑info.plist文件更改了我的nib文件,并将File的所有者设置为扩展NSViewController的类,但现在它给了我上面的错误:
运行... 2012-04-06 15:11:45.552 Rooster [1251:a0f]无法加载nib文件:RoosterView.xib,退出
Run Code Online (Sandbox Code Playgroud)Debugger stopped. Program exited with status value:1.(gdb)
我该如何解决?
我有一些我添加到视图中的自定义按钮-viewDidLoad.我希望它们在视图中垂直居中,如下所示:
self.customButton.center = CGPointMake(98.f, self.view.center.y);
Run Code Online (Sandbox Code Playgroud)
然而,视图高度504.0甚至在3.5"设备上,我期望它416(480 - 20(状态栏高度) - 44(导航栏高度)).
xib中的视图使用"Retina 4 Fullscreen",但将其设置为自由形式并没有帮助.我当然不希望两个xib只是为了解释高度差异.
我知道我可以使用UIScreen但是我希望视图能够意识到高度差异.
编辑:奇怪的是,在-viewWillAppear视图高度正确设置为416.0.为什么[super viewDidLoad]在我之后没有处理这个问题.
人们如何处理这个问题?Autolayout可能会处理这个,但我需要一个兼容iOS5的方法.可以以某种方式自动化处理"居中"吗?
我使用一些按钮创建了一个自定义键盘。我使用界面构建器创建了它们,然后创建了一个CustomKeyboardView文件..
所以我有3个文件
我正在将这个视图添加到我的UIViewController喜欢这个
-(void)createCustomKeyboard{
//kbdCustom is an instance of CustomKeyboardView
kbdCustom = [[[NSBundle mainBundle] loadNibNamed:@"CustomKeyBoardView"
owner:self options:nil] objectAtIndex:0];
kbdCustom.delegate = self;
CGRect frame = kbdCustom.frame;
frame.origin.x = 14.0;
frame.origin.y = 300.0;
kbdCustom.frame = frame;
kbdCustom.backgroundColor = [UIColor clearColor];
[self.view addSubview:kbdCustom];
[self.view bringSubviewToFront:kbdCustom];
}
Run Code Online (Sandbox Code Playgroud)
我在屏幕上看到自定义键盘。但我无法触摸任何按钮。
CustomKeyBoardView.m文件中没有什么花哨的 。我有一些按钮处理程序来处理键盘中每种不同类型的按钮。
@implementation CustomKeyBoardView
- (IBAction)numberPressed:(id)sender {
NSLog(@"Number pressed");
}
- (IBAction)specialCharsPressed:(id)sender {
NSLog(@"specialCharsPressed");
}
- (IBAction)clearTextPressed:(id)sender {
NSLog(@"clearTextPressed");
}
- (IBAction)enterButtonPressed:(id)sender {
NSLog(@"enterButtonPressed");
}
@end
Run Code Online (Sandbox Code Playgroud)
其他一些可能对您有帮助的要点(帮助我) …
我对ios很新.我正在开发一个项目,它经常在整个应用程序中使用某个UIView类.这个类只是一个用背景颜色做一些透明度的图像.这到目前为止工作正常.这个类有时作为单独的UIView存在,有时作为按钮子视图存在.
当我将这个UIVut添加到UIButton作为子视图时,UIView的全部内容以完整大小显示,但按钮的可点击区域保持xib中定义的大小,除非关闭Use Autolayout(即使我手动尝试)设置按钮的框架.)
我想在xib上放置一个UIButton作为占位符,然后根据初始化的UIView的叠加图像的大小定义其大小/可点击区域.
这应该是可能的,还是我误解了xib文件/ autolayout的用法?
在ViewDidLoad下我有......
- (void)viewDidLoad{
[theButton addSubview:_theView];
CGRect buttonFrame = theButton.frame;
buttonFrame.size = CGSizeMake(_theView.getSize.width,_theView.getSize.height);
[theButton setFrame:buttonFrame];
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试调用setFrame之前和之后打印按钮信息时,框架保持相同的大小.
(注意'_theView.getSize'是我添加的)
我做了一个xib并通过以下代码在视图中显示它.
NSArray *xibContents =
[[NSBundle mainBundle] loadNibNamed:@"PickupAddressView"
owner:self
options:nil];
UIView *view = [xibContents objectAtIndex:0]; // Safer than objectAtIndex:0
//UIView *subView=[view.subviews objectAtIndex:0];
[view setFrame:CGRectMake(0.0f, 0.0f, 0.0f, 0.0f)];
CGRect tempFrame=view.frame;
tempFrame.size.width=300;//change acco. how much you want to expand
tempFrame.size.height=350;
[UIView beginAnimations:@"" context:nil];
[UIView setAnimationDuration:0.2];
view.frame=tempFrame;
//[UIView commitAnimations];
[view setFrame:CGRectMake(10.0f, 90.0f, 300.0f, 350.0f)];
[view setBackgroundColor:
[UIColor colorWithPatternImage:
[UIImage imageNamed:@"Register_bg"]]];
[UIView commitAnimations];
[view removeFromSuperview];
[self.view addSubview:view];
Run Code Online (Sandbox Code Playgroud)
我正在使用UIStoryboard,并xib通过以下代码制作并显示.
如何删除此视图.我有一个UIButton,IBAction被称为.
谢谢
在iOS开发中使用xib时,我一直在阅读一些关于动画的帖子.我读到的大部分内容都是不对帧进行动画处理,而是对约束进行动画处理.我已经限制标签在启动时位于视图的中心,然后我将其设置为动画并显示登录文本字段(您看到的典型登录信息).

我这样做了动画框架,当然,当我点击文本字段时,视图将原始约束应用于"我的标题"标签并将其推回到其原始中心位置.

如何删除居中约束并添加新约束以从编程方式从顶部强制空间?
这是我的动画代码:
[UIView animateWithDuration: 0.8
delay: 1.0
usingSpringWithDamping: 0.8
initialSpringVelocity: 0.5
options: UIViewAnimationOptionCurveEaseOut
animations: ^{
self.titleLabel.frame = CGRectOffset(self.titleLabel.frame, 0, -self.view.frame.size.height/4.5);
} completion: ^(BOOL finished) {
if (finished)
{
[UIView animateWithDuration: 0.8
delay: 0.3
usingSpringWithDamping: 0.8
initialSpringVelocity: 0.5
options: UIViewAnimationOptionCurveEaseInOut
animations: ^{
self.userIdTextField.alpha = 1.0;
self.userPasswordTextField.alpha = 1.0;
self.loginButton.alpha = 1.0;
} completion: ^(BOOL finished) {
}];
}
}];
Run Code Online (Sandbox Code Playgroud) 我有个问题.我正在尝试使用图像放在我的自定义UIView中心.该图像外部的部分必须透明且呈灰色.在xib中为"View"我设置了这个:
结果 - 失败.图像外的区域只是灰色,不透明.但如果我补充一下
-(void) viewDidLoad
{
self.view.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5f];
}
Run Code Online (Sandbox Code Playgroud)
然后一切都按预期工作.尝试在xib中实现透明背景时,我做错了什么?
更新:我找到了正在进行视图呈现的代码,并且里面有alpha设置.所以我猜这就是问题所在.谢谢.很抱歉这么新手
我无法设法使视图的宽度适应不同屏幕尺寸的表格视图的大小
这是我在viewDidLoad()上的代码
view.tableView.registerNib(UINib(nibName: "Header", bundle: NSBundle.mainBundle()), forHeaderFooterViewReuseIdentifier: "Header")
Run Code Online (Sandbox Code Playgroud)
并在表视图代表:
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
var cell = tableView.dequeueReusableHeaderFooterViewWithIdentifier("Header") as! Header
// etc
}
Run Code Online (Sandbox Code Playgroud)
请记住,我不想把它放在故事板中,而且我正在使用自动布局.
有小费吗?
如何从Xib正确加载NSView?
我的代码:
var topLevelArray: NSArray? = nil
let outputValue = AutoreleasingUnsafeMutablePointer<NSArray>(&topLevelArray)
if Bundle.main.loadNibNamed("RadioPlayerView", owner: nil, topLevelObjects: outputValue) {
let views = outputValue.pointee
return views.firstObject as! RadioPlayerView
}
topLevelArray = nil
return nil
Run Code Online (Sandbox Code Playgroud)
问题是"outputValue"是一个自动释放指针,一旦我从函数返回,程序崩溃与ACCESS_BAD_ADDRESS
xib ×10
ios ×6
objective-c ×4
iphone ×3
autolayout ×2
uiview ×2
xcode ×2
animation ×1
custom-view ×1
init ×1
iphone-5 ×1
load ×1
macos ×1
nib ×1
nsview ×1
storyboard ×1
superview ×1
swift ×1
uibutton ×1
uikit ×1
uitableview ×1