我正在创build一个通用应用程序。 现在我想在屏幕上放置两个button: 我尝试了自动布局和界面生成器(iOSdevise器),但我只设法适应一个屏幕尺寸(例如3.5英寸显示器)的button。 因此,我将button的大小和间距设置为顶部(超级视图的顶部和上面的button的底部)。 但有没有一种方法适应屏幕尺寸? 例如,button的宽度是视图宽度减去一定的差距。 或者像图片中的button居中(一个会很容易)? 这可能吗? 比另一种select是在代码中做所有事情(创buildbutton并创build约束)。 在这里,我可以查询视图宽度等,以相应地创build我的button。 这是唯一的方法吗? 如何pipe理? 编辑: 现在我在视图控制器上放置了一个空标签。 在这个标签上,我添加了以下限制: 将中心Yalignment到:Superview,等于:0 将中心Xalignment到:Superview,等于:0 在我的button上,我设置了一个固定的高度和宽度。 比超级视图的尾部空间等于50(水平对中作品,因为两个屏幕尺寸具有相同的宽度)。 顶部的button有以下约束: 将中心Yalignment:标签,等于:20 底部的button获取: 顶部空间:标签,等于:20 不知道为什么它需要不同的约束,但在GUI编辑器中,我采取了button的底部或顶部点。 这里的标签也是: 将中心Yalignment:顶部button,等于:20 顶部空间到:底部button,等于:20 现在,无论3.5或4英寸的显示器,屏幕上都有两个button。 一个缺点是在3.5英寸的显示屏上与导航控制器和工具栏的距离非常小。 在这里,我可以使button更小。 任何其他选项? 最初的想法是总是将空间设置为顶部元素,但是在4英寸的屏幕上,底部上的空间比。
我正在尝试使用自动布局来实现一个非常简单的scheme,但没有成功。 请帮助我…我需要一个dynamic大小的3个正方形(例如:在iPad上,所有这些都应该缩放)在一个表格单元格上。 我已经花了几个小时find一个解决scheme….这张图片显示了这个视图应该是这样的: 谢谢
我想用砌体在一行(视图)中显示两个标签(UILabel)。 但是左边的标签比右边的标签宽得多。 他们在这张照片上显示的是(绿色标签和黄色标签) 它们的内容压缩是UILayoutPriorityRequired,我希望左边标签的左边等于它的超级视图,右边的标签的右边等于它的超级视图。 那么如何让每个标签的宽度根据其内容显示更多的标签在视图中? 这是我的代码: _label1 = [UILabel new]; _label1.backgroundColor = [UIColor yellowColor]; _label1.text = @"label,"; _label2 = [UILabel new]; _label2.backgroundColor = [UIColor greenColor]; _label2.text = @"label,"; [_contentView1 addSubview:_label1]; [_contentView1 addSubview:_label2]; [_label1 mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(_contentView1.mas_top).with.offset(5); make.left.equalTo(_contentView1.mas_left).with.offset(2); make.height.equalTo(@40); }]; [_label2 mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(_label1.mas_right).with.offset(2); make.top.equalTo(_contentView1.mas_top).with.offset(5); make.right.equalTo(_contentView1.mas_right).with.offset(-2); make.height.equalTo(@40); }]; [_label1 setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; [_label1 setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; […]
我有一个视图控制器和一些textviews,我使用高度约束常量dynamic设置textviews的高度我设置不一致的问题来设置两个textviews的高度… 有一天,我为不同的设备(iPhone 4s,iPhone 5s,iphone 6s,iphone6s plus)设置了高度,而且这些设备工作正常,但是..第二天它不工作,我不得不再次设置高度常数。 。 我想知道这是怎么发生的? 为什么前一天工作,为什么我不得不改变? 这个特殊事件让我感到非常困惑,这让我对xamarin.ios本身的自动布局失去了信心? 早些时候,像这样的事情发生了一个视图的最高限制之一。 请有人告诉我,如果有任何其他的事情,我必须注意到,在xamarin.ios自动布局… 请有人澄清
我如何可以钉住两个以上宽度的UIViews同样使用NSLayoutConstraints? 现在,我使用下面的代码,我不能钉住两个以上的UIViews: for (int i = 0; i < column.count; i++) { NSString *horizontalFormat = @"H:|[view1][view2(==view1)]|"; NSDictionary *views; if (i < column.count – 1) { views = @{ @"view1": column[i], @"view2": column[i + 1] }; }else{ views = @{ @"view1": column[i – 1], @"view2": column[i] }; } NSArray * horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:horizontalFormat options:NSLayoutFormatAlignAllTop | […]
我正在面对iOS 11中导航栏项目的问题,如下面的截图所示,而两个栏button也不会执行任何button操作。 它在iOS 10.xx及以下的版本和相同的自动布局和大小完美的工作。 以下截图显示了自定义导航栏IB如何实现。 。 我也尝试了以下代码。 if (@available(iOS 11.0, *)) { [[self navigationController] navigationBar].prefersLargeTitles = NO; [[self navigationController] navigationItem].largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeNever; } ..但没有帮助。 请告诉我这里有什么问题,以及如何解决(任何自动布局问题?)。
我用新的Xcode设置基本的UIView子类,并遇到奇怪的行为。 子查看视图乍一看正常加载: – (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self baseInit]; } return self; } – (void)awakeFromNib { [super awakeFromNib]; [self baseInit]; } 我开始在设置为iPhone 6大小的故事板中创build另一个容器视图,就像我自己的一样。 我有一些复杂的布局,只有很less的东西,即使我擅长设置限制,它也出现了变化。 所以我开始尝试简单的视图,看看Xcode升级后的问题。 2 UIViews简单的运动。 首选项设置为每个约束设置为1000,设备设置为iPhone 6s。 但在iPhone 6 / s或我的设备iPhone 6上的结果正在转移: 所以当我开始捣鼓时,我发现如果将故事板设备设置为iPhone SE,它将在iPhone 6模拟器和iPhone 6设备上正确显示内容: 错误的设置,现在它alignment。 我错过了新的Xcode版本中的东西,以及如何使用自动布局和约束? 谢谢A.
我想知道如何在水平UIStackView的alignment属性中将UIStackViewAlignmentCenter中的alignment属性更改为UIStackViewAlignmentTop,反之亦然,并且我想在视觉上同时反映此更改。 编辑: 我拥有的: 这是我的观点层次: 两个button名为b1和b2; b1有一个名为“changeAlignmentToTop”的动作,而b2有一个名为“changeAlignmentToCenter”的动作。 一个名为Pview的UIView框架(0,100,414,100)。 一个名为S1的水平UIStackView,其alignment属性设置为“center”。 这个堆栈视图已被固定到pView的边界。 一个名为S2的水平UIStackView,其alignment属性设置为“Fill”,里面有两个标签。 我想做的事: 当我触摸buttonb1时,我想将S1的alignment从“中心”更改为“顶部”,并且我想为该更改设置animation。 我试过了 – (void) changeAlignmentToTop { [UIView animationWithduration 0.3 animations : ^{ S1.alignment = UIStackViewAlignmentTop; // here I'd prove several options // option – 1 [S1 setNeedsDisplay]; [S1 layoutIfNeeded]; // option – 2 //[S1 setNeedsLayout]; //[S1 layoutIfNeeded]; // option – 3 //[S1 setNeedsDisplay]; //[pView […]
我一直在努力学习自动布局(最后)。 我想有一个垂直滚动的UIScrollView,它包含视图的所有内容。 我想将UIImage视图固定在滚动视图的顶部,并保持图像正方形(scaleToFill)。 基本上我想这样做(只有我想用自动布局来做): 在屏幕边界内,我无法保持图像的高宽比。 每当我添加长宽比约束时,imageView会增长到600点(我认为png的宽度),但是我希望它只是和屏幕一样宽。 我想我正在为UIImageView正确设置约束,因为如果我摆脱scrollView,并直接放在视图imageViw然后它似乎做我想要的。 诀窍是把它放在scrollView中。 这是我目前的设置: 滚动视图上的4个垂直/水平空间约束全部设置为常量0。
我有下面的代码来简单地在我的ViewController的view使用AutoLayout约束以编程方式居中红色正方形: class ViewController: UIViewController { let square: UIView required init?(coder aDecoder: NSCoder) { let squareFrame = CGRectMake(0.0, 0.0, 500.0, 500.0) self.square = UIView(frame: squareFrame) super.init(coder: aDecoder) } override func viewDidLoad() { self.view.addSubview(self.square) self.square.backgroundColor = UIColor.redColor() self.view.backgroundColor = UIColor.blueColor() print(self.square) setupConstraints() print(self.square) } func setupConstraints() { self.square.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint(item: self.view, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: […]