我正在尝试创建一个自定义容器视图,其中包含UIImageView和多行UILabel作为子视图.为了使视图与autolayout很好地协同工作,我将覆盖intrinsicContentSize,如下所示:
- (CGSize)intrinsicContentSize
{
return [self sizeThatFits:self.bounds.size];
}
Run Code Online (Sandbox Code Playgroud)
sizeThatFits计算的大小具有相同的宽度,并调整高度,以便不剪切标签和图像.这很好用,但我很惊讶地在文档中看到以下评论:
此内在大小必须独立于内容框架,因为例如,无法基于更改的高度动态地将更改的宽度传达给布局系统.
如果是这种情况,什么是自动布局方式根据其宽度和内容调整视图当前高度?我应该以不同的方式接近这个吗?
为了学习ARM程序集,我编写了一个简单的测试项目,使用内联汇编和NEON指令执行图像缩减.你可以在这里看到它:
https://github.com/rmaz/NEON-Image-Downscaling
经过一番努力,我设法让它工作,快乐的日子.除了它只适用于小于-O2的优化级别.我已经看了一下生成的ASM,但我看不出为什么会出现这种情况有任何明显的原因.谁能提供任何见解?这是负责内联汇编部分的函数:
static void inline resizeRow(uint32_t *dst, uint32_t *src, uint32_t pixelsPerRow)
{
const uint32_t * rowB = src + pixelsPerRow;
// force the number of pixels per row to a mutliple of 8
pixelsPerRow = 8 * (pixelsPerRow / 8);
__asm__ volatile("Lresizeloop: \n" // start loop
"vld1.32 {d0-d3}, [%1]! \n" // load 8 pixels from the top row
"vld1.32 {d4-d7}, [%2]! \n" // load 8 pixels from the bottom row
"vhadd.u8 q0, q0, q2 \n" // average the pixels …Run Code Online (Sandbox Code Playgroud) 旧的SDK具有对话框方法,可以为各种任务提供简单的UI.此调用已从SDK测试版中删除,似乎没有任何替代它.我们现在应该如何实施这些东西呢?
我最近开始使用UICollectionView,对UICollectionViewFlowLayout有点困惑.似乎计算集合视图中每个单元格的帧,每个项目之间的空间相等.这会导致某些单元格的帧具有小数位置,这会导致标签模糊和图像像素未对齐等等.
我很惊讶地发现在堆栈溢出时没有关于这个的问题,这让我觉得我做错了.我创建了一个测试项目,非常简单地演示了这个问题:
https://github.com/rmaz/BlurryCollectionView
这真的是标准行为吗?在我看来,这使得流程布局在没有子类化的情况下基本上无法使用.或者我错过了什么?
objective-c ×3
cocoa-touch ×2
arm ×1
assembly ×1
autolayout ×1
c ×1
clang ×1
ios ×1
ios6 ×1
uiview ×1