小编Mar*_*rry的帖子

在 TrackImage 上带有图像的 UISlider

我有设置 setMinimumTrackImage 和 setMaximumTrackImage 的 UISLider。两个图像具有相同的分辨率。如果我移动滑块...图像显示不正确。当我拖动滑块控制拇指时,它们正在移动。我试着用

UIImage * sliderBarImage1 = [UIImage imageNamed:@"slider_b"];
UIImage * sliderBarImage2 = [UIImage imageNamed:@"slider_w"];

sliderBarImage1 = [sliderBarImage1 stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0];
sliderBarImage2 = [sliderBarImage2 stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0];

[self.slider setMinimumTrackImage:sliderBarImage1 forState:UIControlStateNormal];
[self.slider setMaximumTrackImage:sliderBarImage2 forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)

无论是否带有stretchableImageWithLeftCapWidth 都不正确。当我旋转手机时,轨道上的图像缩放不正确,因此图像中的信息发生了偏移。类似于这篇文章中的图片:如何在 UISlider 上放置图片?. 当我移动滑块时,图像开始移动并且颜色在最小和最大轨道中没有重叠,从而导致丑陋的效果。

objective-c uislider

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

Windows vs Linux - 数学结果差异

我有 C++ 程序。如果我运行相同部分的代码,Linux 和 Windows 会给出不同的结果。

#include <cmath>
#include <cfloat>
#include <cstdio>



#define MPI 3.141592653589793238462
#define DEG_TO_RAD(x) ((x) * 0.0174532925)
#define cot(x)  (1.0 / tan(x))
#define sec(x)  (1.0 / cos(x))

double p1 = DEG_TO_RAD(35);
double p2 = DEG_TO_RAD(65);

double lambertN = log(cos(p1) * sec(p2));
lambertN /= (log(tan(0.25 * MPI + 0.5 * p2) * cot(0.25 * MPI + 0.5 * p1)));


double t = tan(0.25 * MPI + 0.5 * p1);
double lambertF = cos(p1) * pow(t, lambertN);

//---------------------------

//specify …
Run Code Online (Sandbox Code Playgroud)

c++ linux windows

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

带有"动态"主体的C++ lambda表达式

是否有可能从外面设置lambda体?

例:

经典lambda:

[](double x, double y) -> double { return x + y; };
Run Code Online (Sandbox Code Playgroud)

我想做的是这样的事情(为了捕捉想法,这不是工作代码):

const char * const EXPRESSION_FROM_VARIABLE = "x + y";

[](double x, double y) -> double { return EXPRESSION_FROM_VARIABLE; };
Run Code Online (Sandbox Code Playgroud)

基本上我想在编译时将字符串更改为"表达式".

c++ lambda

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

PHP - 自动将行号作为函数参数传递

我正在用PHP编写Logger类.有没有办法,如何从通话中自动传递行号和脚本文件?

样品:

Logger::Log("message", __LINE__, __FILE__)
Run Code Online (Sandbox Code Playgroud)

我想通过__LINE____FILE__自动的,不需要写它的.我试图做

public static function Log($msg, $l = __LINE__, $f = __FILE__) { ... }
Run Code Online (Sandbox Code Playgroud)

但是这个传递行号和Log方法文件.这在PHP中甚至可能吗?

php

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

Visual Studio - 不同的断点集

在 Visual Studio(2015 及更高版本)中,是否可以拥有多组断点?我有几个场景,我需要调试,但对于每个场景,我希望有不同的断点集。手动启用/禁用它们非常耗时。

visual-studio

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

Kotlin - 使用 Array&lt;Double&gt; 或 DoubleArray

这两者的主要区别是什么:

val array: Array<Double> = arrayOf()
Run Code Online (Sandbox Code Playgroud)

对比

val array: DoubleArray = doubleArrayOf()
Run Code Online (Sandbox Code Playgroud)

我知道一个是使用原始数据类型double,第二个是基于对象的 countrepart Double

使用 plain 有什么惩罚或缺点DoubleArray吗?


为什么我想知道:

我正在使用 JNI 和 for Double,我必须打电话

 jclass doubleClass = env->FindClass("java/lang/Double");
 jmethodID doubleCtor = env->GetMethodID(doubleClass, "<init>", "(D)V");
 jobjectArray res = env->NewObjectArray(elementCount, doubleClass, nullptr);

 for (int i = 0; i < elementCount; i++){
    jobject javaDouble = env->NewObject(doubleClass, doubleCtor, array[i]);
    env->SetObjectArrayElement(res, i, javaDouble);
    env->DeleteLocalRef(javaDouble);
 }
Run Code Online (Sandbox Code Playgroud)

对比

jdoubleArray res = env->NewDoubleArray(elementCount);
env->SetDoubleArrayRegion(res, 0, elementCount, array);
Run Code Online (Sandbox Code Playgroud)

arrays kotlin

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

C++17 - 可变参数模板参数 - 使用模板参数调用前一个返回值的类方法

我有这个代码:

struct Foo{
    int sum;

    Foo() : sum(0) {}
    Foo(int x) : sum(x) {}

    Foo bar(int x){
        return Foo(sum + 1);
    }

    Foo bar(std::vector<int> x){
        return Foo(sum + 1);
    }

    Foo bar(const char* str){
        return Foo(sum + 1);
    }
};


template <typename ... T>
int foo(T ... args){            
    Foo foo;

    //(foo.bar(args), ...);
    return foo.sum;
}

int main() {
   foo(1, 2, "hello", std::vector<int>());
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想像这样创建调用层次结构:

Foo foo;
foo = foo.bar(1);
foo = foo.bar(2);
foo = foo.bar("hello");
Run Code Online (Sandbox Code Playgroud)

基于可变参数模板参数args。 …

c++ variadic-templates c++17

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

FreeType2 - 字体较小

我正在使用FreeType2进行fornt渲染.我的问题是字体大小.我的左上角有[0,0],字体大小设置为屏幕的全高.我的渲染结果可以在图片中看到.

在此输入图像描述

为什么字体不能填满窗户的整个高度?

我的渲染代码:

int devW, devH;
    device->GetViewport(&devW, &devH);

    float sx = 2.0f / static_cast<float>(devW);
    float sy = 2.0f / static_cast<float>(devH);

    x = MyMath::MyMathUtils::MapRange(0, 1, -1, 1, x);
    y = MyMath::MyMathUtils::MapRange(0, 1, -1, 1, y);


    MyStringWide wText = MyStringWide(text);
    this->fontQuad->PrepareForRender();
    for (int i = 0; i < wText.GetLength(); i++)
    {
        int znak = wText[i];

        unsigned long c = FT_Get_Char_Index(this->fontFace, znak);
        FT_Error error = FT_Load_Glyph(this->fontFace, c, FT_LOAD_RENDER);


        FT_GlyphSlot glyph = this->fontFace->glyph;

        MyStringAnsi textureName = "Font_Renderer_Texture";
        textureName += "_";
        textureName += znak;

        if …
Run Code Online (Sandbox Code Playgroud)

c++ opengl freetype

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

C++ shared_ptr从派生方法返回此信息

我一直在用这个:

struct Bar;

struct Foo 
{
   virtual Bar * GetBar() { return nullptr; }
}

struct Bar : public Foo
{
   virtual Bar * GetBar() { return this; }
}

Foo * b = new Bar();
//...
b->GetBar();
Run Code Online (Sandbox Code Playgroud)

我用这个而不是慢dynamic_cast.现在我已经改变了我要使用的代码std::shared_ptr

std::shared_ptr<Foo> b = std::shared_ptr<Bar>(new Bar());
Run Code Online (Sandbox Code Playgroud)

如何更改GetBar返回的方法std::shared_ptr并获得与原始指针相同的功能(不需要dynamic_cast)?

我试过这个:

 struct Foo : public std::enable_shared_from_this<Foo>
 {
     virtual std::shared_ptr<Bar> GetBar() { return nullptr; }
 } 


struct Bar : public Foo
{
    virtual std::shared_ptr<Bar> GetBar() { return shared_from_this(); } …
Run Code Online (Sandbox Code Playgroud)

c++ shared-ptr c++11

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

为iOS构建ICU

我需要 iPhone 的 ICU 库。我试图从源代码构建它,但是,我得到了这个错误:

   clang++   ...  /Users/petr/Development/icu-cross-compile-master/icu-60-2/source/tools/pkgdata/pkgdata.cpp
/Users/petr/Development/icu-cross-compile-master/icu-60-2/source/tools/pkgdata/pkgdata.cpp:544:18: error: call to unavailable function 'system': not available on iOS
    int result = system(cmd);
                 ^~~~~~
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.2.sdk/usr/include/stdlib.h:195:6: note: candidate function has been explicitly made unavailable
int      system(const char *) __DARWIN_ALIAS_C(system);

sh ${ICU_SOURCE}/configure --host=arm-apple-darwin --with-cross-build=${PREBUILD_DIR} ${PREFIX}
Run Code Online (Sandbox Code Playgroud)

我的PREFIX配置如下:

--enable-extras=yes 
--enable-tools=yes 
--enable-icuio=yes 
--enable-strict=no 
--enable-static 
--enable-shared=no 
--enable-tests=yes 
--disable-renaming 
--enable-samples=no 
--enable-dyload=no
--with-data-packaging=static
Run Code Online (Sandbox Code Playgroud)

或者有没有其他方法,如何生成libicudata.a?类似的构建脚本适用于 Android、Mac 和 Win。只有 iPhone 有问题。

c++ icu ios

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