标签: flowlayout

如何设置UICollectionViewDelegateFlowLayout?

UIViewController维护对UICollectionView的引用.控制器应使用UICollectionViewDelegateFlowLayout修改内置流布局.

将视图的数据源设置为self非常容易:

MyViewController.m

- (void)viewDidLoad
{
    self.collectionView.dataSource = self;
}
Run Code Online (Sandbox Code Playgroud)

但是如何将控制器设置为视图的委托流布局?

- (void)viewDidLoad
{
    self.collectionView.dataSource= self;
    // self.collectionView.??? = self; 
}
Run Code Online (Sandbox Code Playgroud)

我试过了:

- (void)viewDidLoad
{
    self.collectionView.dataSource= self;
    self.collectionView.collectionViewLayout = self; 
}
Run Code Online (Sandbox Code Playgroud)

但我得到错误:"不兼容的指针类型分配......".

集合头文件如下所示:

MyViewController.h

@interface MyViewController : UIViewController <UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>
Run Code Online (Sandbox Code Playgroud)

flowlayout ios uicollectionview

96
推荐指数
2
解决办法
6万
查看次数

Swift:如何在设备旋转后刷新UICollectionView布局

我使用UICollectionView(flowlayout)来构建一个简单的布局.每个单元格的宽度设置为使用的屏幕宽度self.view.frame.width

但是当我旋转设备时,单元格不会更新.

在此输入图像描述

我找到了一个函数,在调整方向时调用它:

override func willRotateToInterfaceOrientation(toInterfaceOrientation: 
  UIInterfaceOrientation, duration: NSTimeInterval) {
    //code
}
Run Code Online (Sandbox Code Playgroud)

但我无法找到更新UICollectionView布局的方法

主要代码在这里:

class ViewController: UIViewController , UICollectionViewDelegate , UICollectionViewDataSource , UICollectionViewDelegateFlowLayout{

    @IBOutlet weak var myCollection: UICollectionView!

    var numOfItemsInSecOne: Int!
    override func viewDidLoad() {
        super.viewDidLoad()

        numOfItemsInSecOne = 8
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    override func willRotateToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval) {

        //print("orientation Changed")
    }

    func …
Run Code Online (Sandbox Code Playgroud)

flowlayout ios uicollectionview swift

52
推荐指数
9
解决办法
5万
查看次数

UICollectionView动画单元格大小更改会导致意外行为

我有一个UICollectionViewController,它使用标准UICollectionViewFlowLayout来显示单个垂直的单元格列.我试图在点击单元格时在单元格上创建展开/折叠动画.我使用以下代码来完成此任务:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath (NSIndexPath *)indexPath
{
    [self.feedManager setCurrentlySelectedCellIndex:indexPath.item];
    [self.collectionView performBatchUpdates:nil completion:nil];
}

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    //Return the size of each cell to draw
    CGSize cellSize = (CGSize) { .width = 320, .height = [self.feedManager heightForCellAtIndexPath:indexPath] };
    return cellSize;
}
Run Code Online (Sandbox Code Playgroud)

我的管理对象上的'selectedCellIndex'属性告诉数据模型返回heightForCellAtIndexpath内的展开或折叠大小:

[self.collectionView performBatchUpdates:nil completion:nil];
Run Code Online (Sandbox Code Playgroud)

然后该performBatchUpdates:completiong:方法很好地动画了这个尺寸变化.然而!当动画发生时,扩展单元格可能会导致屏幕底部的部分可见单元格离开屏幕.

如果是这种情况,我随后会折叠此单元格,现在关闭屏幕单元格将在没有动画的情况下捕捉到其旧位置,而所有其他可见单元格将根据需要进行动画处理.我的直觉说这是正确的行为,因为在执行折叠动画时单元格不在屏幕上,并且没有包含在动画渲染过程中.我的问题变成了,我该如何防止这种情况发生?

我宁愿所有细胞一起动画,无论它们是否在屏幕外.有什么想法吗?

animation flowlayout ios uicollectionview

42
推荐指数
1
解决办法
2万
查看次数

与Qt 4.8相比,为什么FlowLayout在Qt 5.2中的表现不同?

我刚刚将我的应用程序从Qt 4.8.4移植到Qt 5.2.1.我在Qt文档FlowLayout中的FlowLayout示例代码中提供了类的问题.

我有QMainWindow一个QDockWidget停靠在中央部件的底部.该QDockWidgetFlowLayout几个子部件.在Qt 4.8中,这就像一个魅力,儿童小工具的大小符合标准尺寸DockWidget.但是,在Qt 5.2中,DockWidget尝试将其大小增加到最大值(从中央小部件取代).更改其布局可防止此不良行为.但当然,我FlowLayout是故意使用的.

为了说明这个问题,我创建了一个最小的例子:

构造函数DockWidget:

    QGroupBox *generalBox = new QGroupBox("");
    generalBoxLayout = new FlowLayout;
    generalBox->setLayout(generalBoxLayout);

    for(int i=0; i<10; ++i)
    {
        QPushButton *button = new QPushButton("Test", this);
        button->setMinimumWidth(100);
        button->setMinimumHeight(100);
        generalBoxLayout->addWidget(button);
    }

    this->setWidget(generalBox);
Run Code Online (Sandbox Code Playgroud)

有人知道问题是什么以及我如何解决它?

编辑 我创建了一个新的最小工作示例,遗憾的是无法重现Qt 4.8和Qt 5.2之间的差异.同样的问题出现在Qt 4.8中,所以我仍然想在这里介绍它:

显示底部停靠的dockwidget占据整个垂直空间的初始视图: 显示底部停靠的dockwidget的初始视图

使用鼠标调整dockwidget的大小后查看 使用鼠标调整dockwidget的大小后查看

使用鼠标调整主窗口大小后查看 使用鼠标调整主窗口大小后查看

这些屏幕截图显示,在手动更改dockwidget的大小后,dockwidgets的行为与预期一致.但是,在初始化时,窗口小部件从中央窗口小部件获取所有可用空间,这是不希望的.

有人知道解决方案/解决方法吗?

qt qt4 flowlayout qdockwidget qt5

26
推荐指数
1
解决办法
2108
查看次数

如何让JToolBars包装到下一行(FlowLayout)而不将它们隐藏在它们下方的JPanel中?

我正在制作一个GUI,它在一个大型JPanel上方显示三个JToolBars.这些工具栏总体上非常大,所以我使用FlowLayout使它们在到达JFrame边界时换行到下一行.问题是,当它们换行到下一行时,它们会被下面的JPanel隐藏起来.我希望我可以强制包含工具栏的JPanel增长到足以显示所有工具栏.

有没有办法做到这一点?或者是否有其他方法可以使这些工具栏可见?

java swing flowlayout jtoolbar

18
推荐指数
1
解决办法
8295
查看次数

具有流布局的水平滚动方向模式下的UICollectionView标题位置

我有带有水平滚动方向的Flow布局的ios UICollectionView.在这种情况下,典型的标题位置位于单元格的左侧.

我想在节细胞的顶部制作标题

你知道我怎么能这样做吗?

header flowlayout ios uicollectionview

18
推荐指数
2
解决办法
1万
查看次数

当内容包含在流布局中时,如何将单选按钮或复选框及其标签保持在一起

当浏览器窗口变窄时,如何在文本换行时将单选按钮()或复选框[]及其标签保持在一起,这样我们就不会得到这样的结果:

          [ ] pepperoni   [ ] anchovies   [ ] mushrooms    [ ]
          olives
Run Code Online (Sandbox Code Playgroud)

编辑以回应nowrap建议.谢谢你的建议.差不多了.它适用于Chrome,FF和Opera,但不适用于IE9.当页面CSS label {white-space: nowrap}和标记是:

          <td>
          <div>
          <label>
          <input type="radio" name="pizza" checked="true" 
           id="pepperoni" value="pepperoni"  />pepperoni  </label>
          <label>
          <input type="radio" name="pizza"  
           id="anchovies" value="anchovies"  />anchovies  </label>
           <label>
          <input type="radio" name="pizza" 
           id="mushrooms" value="mushrooms"  />mushrooms  </label>
          <label>
          <input type="radio" name="pizza" 
           id="olives" value="olives"  />olives           </label>
          </div>
          </td>
Run Code Online (Sandbox Code Playgroud)

在IE9中 TD变为固定宽度; 当浏览器窗口变窄时,TD不会收缩,我明白了:

         ( ] pepperoni   ( ) anchovies   ( ) mushrooms   ( )  olives
Run Code Online (Sandbox Code Playgroud)

当我需要这个时:

          ( ) pepperoni   ( ) anchovies   
          ( …
Run Code Online (Sandbox Code Playgroud)

html css checkbox radio-button flowlayout

14
推荐指数
2
解决办法
2万
查看次数

具有多个行和列的Recycler视图 - AutoFit,如Flow Layout [Android]

我正在构建一个像这样的布局的挑战:

在此输入图像描述

我的第一个见解是使用带有适配器的RecyclerView,该适配器可以处理每个项目并使其布局膨胀.

到目前为止,还不是那么好.

到目前为止我有这个布局:

在此输入图像描述

我可以感觉到我几乎就在那里,但是真的......我花了一个星期思考如何让它变得更好,或者就像UI提出的那样.

我的一些尝试是

  1. 使用网格布局并根据列表中的项目数更改最大列数
  2. StaggeredGridLayoutManager听起来像是一个强大的候选者来修复它并让我开心,但不幸的是,当我尝试使用它时,我意识到我们需要在构造函数上传递一些spanCount(列),我找到了一些方法来解决这个限制,改变了每行的列数,但我不喜欢最终结果,不像我在Foursquare等其他应用中看到的那样设置您的兴趣.
  3. 我查看了这个库Flow Layout,但我甚至没有开始使用它,因为我不想失去整个回收器的视图功能,我相信有一种方法可以使它工作!.....即使知道图书馆完全符合我的需要.

伙计们,我不是在这里寻找一些已经完成的代码安静或者有人来完成我的工作.其实我正在寻找隧道尽头的灯光.

android layout-manager flowlayout gridlayoutmanager android-recyclerview

14
推荐指数
1
解决办法
8302
查看次数

在UICollectionView中更改滚动方向

我有一个UICollectionView我已经设置,一切正常(选择,标题等),但是,我想在某些情况下更改滚动方向.

简而言之,如果我进入故事板并更改scrollDirection它工作正常,但我想以编程方式进行!

我试图用类似的东西直接改变集合视图的滚动方向

    [myCollectionView setScrollDirection:....and so on.......
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我找不到scrollDirection或类似的东西.

我也尝试设置流布局,但我确信我做错了(即尝试将ViewLayout设置为FlowLayout).

    UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc]init];
    [flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];
    [myCollectionView setCollectionViewLayout:flowLayout];
Run Code Online (Sandbox Code Playgroud)

这会导致很多Constraint问题崩溃,我怀疑我需要使用flowLayout做更多的工作(从我发现它现在有点高于我).

还应该注意的是,我使用的是自定义单元格,页眉和页脚.

简而言之,是否有一种简单的方法可以做到这一点?或者有没有人知道一个好的Flow Layout教程?

编辑

我这样设置了集合视图;

[myCollectionView setDataSource:self];
[myCollectionView setDelegate:self];
Run Code Online (Sandbox Code Playgroud)

我实现这些委托方法,一切正常

viewForSupplementaryElementOfKind
numberOfSectionsInCollectionView
numberOfItemsInSection
cellForItemAtIndexPath
didSelectItemAtIndexPath
Run Code Online (Sandbox Code Playgroud)

我已经将DataSource和Delegate添加到.h以及FlowLayout委托但是我不确定我应该为后者添加什么.

大多数视觉布局都是在Story Board中完成的,有一些东西,比如字体,大小和颜色,我以编程方式进行.

另一个编辑

当我尝试更改FlowLayout时,这是错误,当我尝试使布局无效时,我也会得到这个错误.

无法同时满足约束.可能至少下列列表中的一个约束是您不想要的约束.试试这个:(1)看看每个约束并试着找出你不期望的东西; (2)找到添加了不需要的约束或约束的代码并修复它.(注意:如果您看到您不理解的NSAutoresizingMaskLayoutConstraints,请参阅UIView属性的文档translatesAutoresizingMaskIntoConstraints)

"<NSAutoresizingMaskLayoutConstraint:0x89967f0 h=--& v=--& V:[menuCell:0x8991700(50)]>",
"<NSLayoutConstraint:0x8991200 menuCell:0x8991700.bottom == UILabel:0x8992be0.bottom + 100>",
"<NSLayoutConstraint:0x898fd50 UILabel:0x8992be0.top == menuCell:0x8991700.top + 3>"
Run Code Online (Sandbox Code Playgroud)

将尝试通过打破约束来恢复

打破objc_exception_throw以在调试器中捕获它.在列出的UIView上的UIConstraintBasedLayoutDebugging类别中的方法也可能有所帮助.

xcode cocoa-touch flowlayout ios uicollectionview

11
推荐指数
3
解决办法
2万
查看次数

最后一个单元格的UICollectionView布局

我有一个带有UICollectionViewFlowLayout的collectionview,我在其中放了10个项目.它们有不同的尺寸:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {

if (indexPath.row<6) {
    CGSize retval =  CGSizeMake(100, 100);
    return retval;
}

CGSize retval =  CGSizeMake(200, 130);

return retval;
}
Run Code Online (Sandbox Code Playgroud)

它的布局如下:前6个单元看起来很好,7-9是正确的,但最后一个不是中心对齐的,

在此输入图像描述 在此输入图像描述

任何人都可以向我解释一下吗?

和怨恨的日子我正在玩收集布局,但仍然感到困惑的选择flowlayout和自定义布局.关于这个的任何原则?

很多thx提前.

flowlayout uicollectionview

10
推荐指数
1
解决办法
2601
查看次数