在另一个以编程方式创建的视图下方布局视图

Posted

技术标签:

【中文标题】在另一个以编程方式创建的视图下方布局视图【英文标题】:Layout views below another programmatically created views 【发布时间】:2014-01-24 11:53:58 【问题描述】:

我有一个屏幕,其中包含多个 UIImage(它们的数量和大小仅在运行时才知道,因此我以编程方式添加它们)和这些 UIImage 下方的一些固定按钮。

如何让按钮在所有图片下都显示出来?

我试过了

1.) 将 Buttons 和 Images 放入 2 个单独的视图中,然后在它们之间添加约束。没有结果,按钮隐藏在图像后面。2.) 将按钮放入单独的视图并在代码中设置约束(尝试了 viewDidLoad 和 viewDidAppear)。根据图像的大小和数量,在容器视图和屏幕顶部之间设置约束。 代码示例:

-(void) viewDidAppear:(BOOL)animated

    [super viewDidAppear:animated];
    NSInteger totalImages = [self.object.fullphotos count];
    self.labelsTopConstraint.constant = totalImages*(imageHeight + 20) + 10;

如果 2 个按钮位于右侧,但不响应触摸。

我应该如何正确布局所有内容?

提前致谢!

【问题讨论】:

【参考方案1】:

为这些图像创建一个 Tableview 并在最后一个单元格中添加按钮。

【讨论】:

谢谢,使用了一个 tableView 并将每个图像或按钮放在单独的单元格中。【参考方案2】:

最好的方法是创建一个可以在 viewDidAppear 中调用的刷新方法的 Object

MyObject.h

@interface MyObject : UIViewController
@property (nonatomic,strong) UIImageview *img;
@property (nonatomic,strong) UIButton *btn;
- (void) refresh;

在 MyObject.m 中

- (void)viewDidLoad 
    [self.btn addTarget:self action:@selector(myMethod:) forControlEvents:UIControlEventTouchUpInside];



- (void) refresh 
     //make your settings here


-(void)myMethod 
    //your button action here

如果你的对象在 NSArray 中,那么在你的控制器中:

-(void) viewDidAppear:(BOOL)animated

    [super viewDidAppear:animated];
    for (MyObject *myObj in objectsArray) 
        @autoreleasePool 
            [myObj refresh];
        
    

【讨论】:

以上是关于在另一个以编程方式创建的视图下方布局视图的主要内容,如果未能解决你的问题,请参考以下文章

基于在 Storyboard 中使用自动布局创建的另一个视图,以编程方式使用框架创建视图

以编程方式使用布局锚点的自动布局不起作用

以编程方式创建视图 VS。笔尖

故事板视图(iphone 4/5/6)影响集合单元大小的布局(以编程方式设置)

iOS9:在另一个以编程方式添加的视图中居中以编程方式添加的视图

以编程方式创建布局,使用堆栈视图和约束不起作用