小编Grz*_*icz的帖子

为什么我的子视图根据设备方向无法正确居中?

我正在尝试以编程方式创建一个自定义视图控制器,其子视图位于屏幕中心.我已成功,当我导航到此视图时,居中视图显示在中心,并在旋转设备时正确旋转.

但是,在此导航应用程序中,如果我在处于纵向模式时进入自定义视图,则应该居中的视图会将自身定位在不是屏幕中心的位置.我已经把所有的意见,控制器,父母,奶奶,圣母必要的自动调整大小属性...我已经跑出来的东西粘在自动调整大小面具,仍然例子很糟糕.

我确定我错过了一些可以解决所有问题的神奇方法的调用,但我还没想到要调用什么或者在哪里(setNeedsDisplay?setNeedsLayout?).为了展示这个问题我已经创建了一个提供完整的例子https://github.com/gradha/iPhone-centered-rotation-test您可以克隆,并在模拟器或设备上运行.我是从Apple的导航控制器创建的,只需添加一个假的单元格来推动我手动创建的视图.

定制视图可以被发现在https://github.com/gradha/iPhone-centered-rotation-test/blob/master/Classes/CenteredViewController.m这里是负责创建的中心子视图的方法的loadView:

/* Try to force the parent view to be as we want it. */
self.view.backgroundColor = [UIColor yellowColor];
self.view.autoresizesSubviews = YES;
self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight |
    UIViewAutoresizingFlexibleWidth;

/* Top left blue square, for reference. */
blue_ = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 130, 130)];
[self.view addSubview:blue_];
blue_.backgroundColor = [UIColor blueColor];
[blue_ release];

/* Create red centered rectangle. */
red_ = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
red_.backgroundColor = [UIColor redColor];
red_.autoresizingMask = …
Run Code Online (Sandbox Code Playgroud)

iphone rotation uiviewcontroller uiview auto-rotation

5
推荐指数
1
解决办法
6652
查看次数

如何在 NSTableView 上放置 NSButton

后面什么都没有的按钮 表已加载 后面有桌子的按钮

1) 按钮后面没有表格 2) 表格已加载 3) 滚动后

如果我在 NSTableView 上放置一个按钮,我会在滚动后留下工件。有谁知道如何解决这一问题?

我目前的解决方案只是将带有表格的部分分成2个部分。下部是后台禁用的按钮。

我现在的解决方案

macos cocoa nstableview

5
推荐指数
1
解决办法
292
查看次数

Nim运算符重载

刚开始用Nim语言编程(到目前为止我真的很喜欢).作为一个学习练习,我正在编写一个小型矩阵库.我有更多代码,但我只会展示与此问题相关的部分.

type
  Matrix*[T; nrows, ncols: static[int]] = array[0 .. (nrows * ncols - 1), T]           

# Get the index in the flattened array corresponding 
# to row r and column c in the matrix
proc index(mat: Matrix, r, c: int): int =
  result = r * mat.ncols + c

# Return the element at r, c
proc `[]`(mat: Matrix, r, c: int): Matrix.T =
  result = mat[mat.index(r, c)]

# Set the element at r, c
proc `[]=`(mat: var Matrix, r, …
Run Code Online (Sandbox Code Playgroud)

operator-overloading nim-lang

5
推荐指数
1
解决办法
1542
查看次数

在nim中传递函数

我在Nim(版本0.10.2)中传递数学函数(procs)时遇到问题.

import math

var s1 = @[1.1, 1.2, 1.3, 1.4]
var s2 = map(s1, math.sqrt)
Run Code Online (Sandbox Code Playgroud)

我收到了错误

Error: 'sqrt' cannot be passed to a procvar
Run Code Online (Sandbox Code Playgroud)

如果我为sqrt编写一个包装器函数,它就可以正常工作.

proc fxn(x: float): float = math.sqrt(x)
var s2 = map(s1, fxn)
Run Code Online (Sandbox Code Playgroud)

我使用平方根和map作为示例,但最终我将sqrt(和其他数学过程)传递给另一个proc.有没有办法在不编写包装函数的情况下执行此操作?

functional-programming parameter-passing nim-lang

5
推荐指数
1
解决办法
1282
查看次数

如何更改Nim编译器输出文件的位置和名称

编译Nim程序nim c -r example.nim创建输出文件example.我想在另一个文件夹中创建一个输出文件,其名称bin/example.o更容易gitignore.

到目前为止我尝试过的:

nim c -r example.nim -o:bin/example.o
nim c -r example.nim --out:bin/example.o
nim c -r example.nim -o:example.o
nim c -r example.nim --out:example.o
Run Code Online (Sandbox Code Playgroud)

所有这些尝试的结果与我省略-o/--out选项的结果example相同,从而导致与文件位于同一文件夹中的可执行example.nim文件.如果我没有传递选项,编译器甚至不接受该选项-r(这让我觉得我误解了该选项的目的).

我正在使用从github devel分支源安装和编译的Nim 0.10.3 .

什么编译器选项允许我修改编译的输出文件?

nim-lang

5
推荐指数
1
解决办法
457
查看次数

从Nim的tar.gz档案中读取文件

寻找一种使用Nim编程语言(版本0.11.2)从tar.gz存档读取文件的方法.说我有一个档案

/my/path/to/archive.tar.gz
Run Code Online (Sandbox Code Playgroud)

和该档案中的文件

my/path/to/archive/file.txt
Run Code Online (Sandbox Code Playgroud)

我的目标是能够在Nim中逐行读取文件的内容.在Python中,我可以使用tarfile模块执行此操作.在Nim中有libzip和zlib模块,但文档很少,没有示例.还有zipfiles模块,但我不确定它是否能够使用tar.gz档案.

gzip file tar nim-lang

5
推荐指数
2
解决办法
503
查看次数

Nim 语言中的 countup 和 countdown 迭代器可以用于变量声明吗?

我正在尝试学习 Nim 及其功能,例如迭代器;我发现下面的例子工作正常。

for i in countup(1,10):   # Or its equivalent 'for i in 1..10:' 
 echo($i)
Run Code Online (Sandbox Code Playgroud)

但是,以下不起作用:

var 
 counter = countup(1,10) # THIS DO NOT WORK !
 # counter = 1..10   # This works

for i in counter :  
 echo($i)
Run Code Online (Sandbox Code Playgroud)

Nim 编译器报告以下错误:

错误:试图调用未声明的例程:'countup'

countup 如何是未声明的例程,它是一个内置的迭代器!?

或者这是一个要报告的错误?

在变量声明中强制使用自定义迭代器的解决方案是什么,例如 countup 或 countdown ?

注意:我在 Windows 平台上使用 Nim 0.13.0。

nim-lang

5
推荐指数
1
解决办法
581
查看次数

离线时如何丢弃待处理的 DocumentReference 写入?

我正在使用 Firebase Firestore 文档在地图上发布用户的位置,以便他们能够看到彼此。当它们都具有良好的连接时,这种方法工作正常,但有时它们的移动设备无法连接到 Firebase 服务器,并且写入似乎已被缓存:每当它们恢复连接时,所有待处理的位置写入都会批量发送。

对于其他用户来说,效果是他们看到一个人的位置停下来,过了一会儿他们开始快速移动,直到地图位置捕捉到真实值。这很烦人并且浪费带宽。

我尝试禁用持久性缓存,但这没有帮助(只有当发射器应用程序死亡时才会有帮助,但只要它存在,位置就会缓存在内存中)。

也许问题是我不应该为此目的使用文档,并且还有另一种 Firebase 机制允许丢弃陈旧的写入数据以进行实时通信?

java android firebase google-cloud-firestore

5
推荐指数
1
解决办法
691
查看次数

Nim 和 SDL2 的 Rect 问题

我有以下 Nim+official libsdl2包装器代码

import sdl2

discard sdl2.init(INIT_EVERYTHING)

let
  window = createWindow("Tic-Tac-Toe", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 600, 390, SDL_WINDOW_SHOWN)
  renderer = createRenderer(window, -1, Renderer_Accelerated or Renderer_PresentVsync or Renderer_TargetTexture)

proc loadImage(file: string): TexturePtr =
  let loadedImage = loadBMP(file)
  let texture = createTextureFromSurface(renderer, loadedImage)
  freeSurface(loadedImage)
  return texture

proc applySurface(x: cint, y: cint, tex: TexturePtr, rend: RendererPtr) =
  var pos: Rect
  pos.x = x
  pos.y = y
  queryTexture(tex, nil, nil, pos.w, pos.h)
  copy(rend, tex, nil, pos)

let
  background = loadImage("resources/bg.bmp")

clear(renderer)
applySurface(0, 0, background, …
Run Code Online (Sandbox Code Playgroud)

sdl sdl-2 nim-lang

4
推荐指数
1
解决办法
471
查看次数

为什么 ExtractMpegFramesTest 不适用于旋转的输入文件?

我开始为应用程序解码/编码视频,似乎BigFlake 的网站是工作视频代码的权威参考。我已将ExtractMpegFramesTest_egl14.java复制到我的项目中,并将其修改为使用不同的文件路径,但仅此而已。它从我复制到设备中的预先录制的视频中正确提取帧。然而,当尝试将它与从设备相机录制的视频一起使用时,我得到的帧只是水平线:

在此输入图像描述

在测试了不同录制的视频后,我意识到问题来自旋转视频。该设备的摄像头对来自帧缓冲区的帧进行编码,然后在视频上添加旋转标签。这可以从对象中提取MediaFormat

int rotation = format.getInteger("rotation-degrees");
Run Code Online (Sandbox Code Playgroud)

不幸的是,交换已保存图像的宽度/高度不会改变任何内容,图像仍然会损坏。必须对保存代码执行哪些操作才能正确处理旋转帧?

java video android android-mediacodec

4
推荐指数
1
解决办法
171
查看次数