如何正确调整UICollectionView的大小以使其完全显示其内容?我尝试了很多东西,包括设置框架,调用reloadData和使布局无效:
self.collectionView.contentSize = CGSizeMake(300, 2000);
self.collectionView.frame = CGRectMake(0, 0, 300, 2000);
[self.collectionView reloadData];
[self.collectionView.collectionViewLayout invalidateLayout];
Run Code Online (Sandbox Code Playgroud)
但这些都没有任何影响.按下按钮后,我仍然看到初始视图,如下所示:

我有一个小的演示程序,我有一个产生100个元素的数据源.在Interface Builder中,我最初将UICollectionView的大小设置为一个较小的值,以便不是所有元素都适合,之后我按下一个按钮,然后执行上面的代码.我希望UICollectionView现在显示所有元素,但事实并非如此.
编辑:演示程序可以在https://github.com/mjdemilliano/TestUICollectionView找到.
编辑2:我观察到帧更新在某些时候丢失,因为如果我再次按下按钮,当前帧将回到旧值.在按钮事件处理程序中添加一些日志语句后,日志输出为:
before: frame = {{0, 58}, {320, 331}}, contentSize = {320, 1190}
update button pressed
after: frame = {{0, 0}, {300, 2000}}, contentSize = {300, 2000}
before: frame = {{0, 58}, {320, 331}}, contentSize = {320, 1190}
update button pressed
after: frame = {{0, 0}, {300, 2000}}, contentSize = {300, 2000}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么不保留框架更改,改变它的原因.
在某些时候,我将用流布局中获得的值替换硬编码值,但我想排除这一点,并尽可能简单地保持我的示例.
上下文:我最终想要做的是:我有一个可滚动的视图,包含标签和图像等各种控件,以及一个包含动态内容的集合视图.我想滚动所有这些,而不仅仅是集合视图,因此我没有使用集合视图自己的滚动工具,它工作正常.
在显示表单之前,如何在自动生成的表单中设置字段的初始值以添加Django模型实例?我正在使用Django 1.3.1.
我的模型如下:
class Foo(models.Model):
title = models.CharField(max_length=50)
description = models.TextField()
Run Code Online (Sandbox Code Playgroud)
而目前的管理形式真的没什么特别的
class FooAdmin(admin.ModelAdmin):
ordering = ('title',)
Run Code Online (Sandbox Code Playgroud)
当我使用管理页面添加一个新的Foo实例时,我得到一个很好的表单,其中包含标题和描述的空字段.我想要的是描述字段是通过调用函数获得的模板设置的.
我目前最好的尝试是:
def get_default_content():
return 'this is a template for a Foo description'
class FooAdminForm(django.forms.ModelForm):
class Meta:
model = Foo
def __init__(self, *args, **kwargs):
kwargs['initial'].update({'description': get_default_content()})
super(FooAdminForm, self).__init__(self, *args, **kwargs)
class FooAdmin(admin.ModelAdmin):
ordering = ('title',)
form = FooAdminForm
Run Code Online (Sandbox Code Playgroud)
但如果我尝试这个,我得到这个Django错误:
AttributeError at /admin/bar/foo/add/
'FooForm' object has no attribute 'get'
Request Method: GET
Request URL: http://localhost:8000/admin/bar/foo/add/
Django Version: 1.3.1
Exception Type: AttributeError
Exception Value: 'FooForm' …Run Code Online (Sandbox Code Playgroud) 我通过以下方式动态创建IFRAME:
var wrapUpIframe = document.createElement("iframe");
wrapUpIframe.id = 'WrapUpDialog3';
wrapUpIframe.src = 'WrapUpDialog.html';
document.body.appendChild(wrapUpIframe);
Run Code Online (Sandbox Code Playgroud)
在动态创作之后,我document.domain被缩短Servername.dc.com到只有dc.com,
但是当我尝试访问时,contentWindow我得到了一个Access被拒绝的错误:
document.getElementById("WrapUpDialog3").contentWindow.SomeFunction();
Run Code Online (Sandbox Code Playgroud)
注意:当我在HTML中静态定义IFRAME时,它可以正常工作.
我还试图document.domain通过以下方式更改我的IFRAME :
WrapUpDialog3.document.domain = dc.com;
Run Code Online (Sandbox Code Playgroud)
我检查了两个document.domain和我的IFRAME域,它们都是相同的.
我能做什么?
我正在使用IE9.
我正在使用select2 4.0.3.我有一个select2框用于输入电子邮件地址,我想确保所有电子邮件地址都包含在内.val(),也是用户在搜索字段中输入的地址.
表单字段由引用$('.invite-emails-field').当我按下发送按钮,在事件处理程序$('.invite-emails-field').val()只是给我的前两个地址test1@example.com和test2@example.com,而第三个地址(test3@example.com).
这是我初始化select2元素的方法:
$('.invite-emails-field').select2({
tags: true,
tokenSeparators: [',', ' '],
selectOnBlur: true
});
Run Code Online (Sandbox Code Playgroud)
在selectOnBlur没有任何效果,我无法找到任何东西,关于选择2 v4的工作.我尝试在各种元素上发射几个事件,但都没有奏效.
我希望当我按下Send按钮时,我可以调用select2框来触发为搜索字段中的内容创建标记test3@example.com,然后.val()返回一个包含所有三个地址的数组.
更新:我为你创建了一个jsFiddle.像这样输入输入:
然后按"发送"按钮,您将看到:
其中,test3@example.com从输出丢失.
请注意,在我的实际应用程序中,我已禁用下拉列表,因为我只想要标记行为.
我有一个曾经可以工作的C++。但是,包含<functional>标头后,编译失败并显示消息
c:\mingw\lib\gcc\mingw32\9.2.0\include\c++\bits\std_function.h: In static member function 'static void std::_Function_base::_Base_manager<_Functor>::_M_clone(std::_Any_data&, const std::_Any_data&, std::true_type)':
c:\mingw\lib\gcc\mingw32\9.2.0\include\c++\bits\std_function.h:167:11: error: '__dest' does not name a type
167 | ::new (__dest._M_access()) _Functor(__source._M_access<_Functor>());
| ^~~~~~
c:\mingw\lib\gcc\mingw32\9.2.0\include\c++\bits\std_function.h:167:17: error: expected ')' before '.' token
167 | ::new (__dest._M_access()) _Functor(__source._M_access<_Functor>());
| ~ ^
| )
Run Code Online (Sandbox Code Playgroud)
我使用的是 MinGW GCC 8.2.0,但版本 9.2.0 也会出现这种情况。