我是一个相当新的 iOS 开发人员。我喜欢 AutoLayout 和程序化 UI 元素。NSLayoutConstraints 的使用对我来说非常有意义,而调整它们的值的地方就在代码中。
然而,我可以在网上找到的几乎所有关于创建 iOS UI 元素的信息都使用 XIB 或 Storyboard。有很多关于何时使用其中一个或另一个的讨论,包括在 SO 上,但我似乎找不到任何关于为什么有人可能想要跳过它们,而只是在代码中完成这一切。
我在这里缺少一些基本的东西吗?
例如,这是我的代码片段。我不能在没有 XIB 或情节提要的情况下继续这种方式吗?
UIView *overlayView = [[UIView alloc] initWithFrame:[self getScreenFrameForCurrentOrientation]];
overlayView.opaque = NO;
mHighlightImagePicker.cameraOverlayView = overlayView;
CGSize screenSize = [[UIScreen mainScreen] bounds].size;
float cameraAspectRatio = 4.0 / 3.0;
float imageWidth = floorf(screenSize.width * cameraAspectRatio);
float scale = ceilf(((screenSize.height - 90) / imageWidth) * 100.0) / 100.0;
mHighlightImagePicker.cameraViewTransform = CGAffineTransformMakeScale(scale, scale);
mCameraToolBar=[[UIImageView alloc] init];
mCameraToolBar.image =[UIImage imageNamed:@"review_bottom_bar"];
mCameraToolBar.userInteractionEnabled = YES;
mCameraToolBar.hidden = NO;
[mCameraToolBar setTranslatesAutoresizingMaskIntoConstraints:NO];
[overlayView addConstraint:
[NSLayoutConstraint constraintWithItem:mCameraToolBar
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:overlayView
attribute:NSLayoutAttributeBottom
multiplier:1
constant:-70]];
[overlayView addConstraint:
[NSLayoutConstraint constraintWithItem:mCameraToolBar
attribute:NSLayoutAttributeLeft
relatedBy:NSLayoutRelationEqual
toItem:overlayView
attribute:NSLayoutAttributeLeft
multiplier:1
constant:0]];
[overlayView addConstraint:
[NSLayoutConstraint constraintWithItem:mCameraToolBar
attribute:NSLayoutAttributeRight
relatedBy:NSLayoutRelationEqual
toItem:overlayView
attribute:NSLayoutAttributeRight
multiplier:1
constant:0]];
[overlayView addConstraint:
[NSLayoutConstraint constraintWithItem:mCameraToolBar
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:overlayView
attribute:NSLayoutAttributeBottom
multiplier:1
constant:0]];
[overlayView addSubview:mCameraToolBar];