小编Fat*_*tie的帖子

使用一根手指触摸在中心旋转图像

我想用一根手指触摸在中心点上旋转下面的图像...

我想用触摸旋转图像时显示带有标签的图像值.

我已完成图像旋转,但问题是如何根据旋转设置图像的值.

旋转角度增加,因此我无法设置该值.

谁能帮我?

代码如下

float fromAngle = atan2(firstLoc.y-imageView.center.y, 
                            firstLoc.x-imageView.center.x);

    NSLog(@"From angle:%f",fromAngle);
    float toAngle = atan2( currentLoc.y-imageView.center.y, 
                          currentLoc.x-imageView.center.x);

    NSLog(@"to Angle:%f",toAngle);
    // So the angle to rotate to is relative to our current angle and the
    // angle through which our finger moved (to-from)
    float newAngle =angle+(toAngle-fromAngle);


    NSLog(@"new angle:%.2f",newAngle);


 CGAffineTransform cgaRotate = CGAffineTransformMakeRotation(newAngle);

 imageView.transform=cgaRotate;


angle = newAngle;
Run Code Online (Sandbox Code Playgroud)

谁能帮我 ?

iphone image rotation

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

如果您有IBOutlet但不是属性,是否保留?

我发现这个问题的文档不清楚:

假设你正在使用iOS(不是Mac的情况,不需要提及差异).说严格是4.0+(不需要提及旧操作系统的差异).假设我们严格自动加载NIB.

假设你有一个UIViewController,BigView.假设NIB文件中有十几个所谓的"顶级"项目......可以是自定义控件,图像或其他任何内容.

假设您肯定会在应用程序运行期间多次明确创建然后摆脱BigView.所以:

对于NIB中的其中一个顶级项目,有三种可能性:

(1)根本没有任何形式的IBOutlet.

(2)你有一个连接的IBOutlet - 但不是属性.

(3)你确实有一个连接的IBOutlet属性(为了避免混淆,我们会说保留属性).

那么BigView发布时项目会发生什么?

在(3)的情况下,您必须明确释放.如果你不这样做,它将在视图消失后徘徊.没问题.

在(1)的情况下,我假设(但是任何人都可以确认?)当BigView消失时该项目将被释放.

在(2)的情况下,不清楚会发生什么.......

看看众所周知的参考链接:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html这是非常可疑的:

"在iOS中,nib加载代码使用setValue:forKey:方法重新连接每个插座.该方法类似地寻找一个合适的访问器方法和[所以如果没有一个发生的话会发生什么?告诉我们APPLE ...]当失败时,它会回到其他方式...... [GOOD GRIEF!]"

并查看此文档:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html并向下滚动到"Nib对象保留"

所以......

"nib文件中的对象创建时保留计数为1,然后自动释放" Fantastic ..

可是等等!读几句话......

但是,...如果没有可用的setter方法,则使用可用的setter方法或默认保留对象

他们在说什么?

它们是否意味着如果没有可用的setter(ivar,但没有属性),它是AGAIN RETAINED(除了他们在前一条款中提到的"保留") - 或者,他们只是重复自己,即"默认保留对象"与他们之前刚刚讨论的"保留"相同("使用保留计数1创建然后自动释放").

为什么他们甚至会提到自动释放,如果不是这样的话?

确实 - 如果有人真正明确知道这个问题的答案...... 你怎么知道的?!?你问过DTS,还是通过测试,或者?我建议,关键文档(只是粘贴)是非常不清楚的.

再次 - 如果你有一个IBOutlet,但不是一个属性,连接到"顶级"对象.. 你有责任释放它吗?它保留了吗?在那种情况下?

就此而言....仅仅在情况(1)中,当BigView消失时,它会被释放吗?我当然会认为情况确实如此,但谁知道呢?

问题是如果你使用IBOutlet iVar会发生什么,而不是属性......

我愚蠢地从来没有想过这个/假设太多,有没有人有决定性的答案?干杯!!


为了记录,我做了一个测试项目.

事实上(令我惊讶的是)将IB元素连接到IBOutlet的单纯行为实际上显然增加了一个保留.

(我只能从伪劣的文件中假设,在那种情况下你特别得到:保留,自动释放,保留 - 导致一个保持平衡.)

所以,这就是答案.

我将发布演示项目.我也将任何读者引导到下面的Jonah的答案,它完美地解释了setValue的行为:forKey:干杯

iphone cocoa-touch memory-management interface-builder nib

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

estimatedHeightForRowAtIndexPath实际上可以改变一行的最终"正确"高度吗?

我在使用estimatedHeightForRowAtIndexPath时发现了一个令人震惊的问题或反直觉行为

(1)我的桌子行高度差异很大.最终结果可以从111到约400.

(2)我绝对完美地计算每一行的高度.我手头有一个数组,也就是缓存.

{请注意,这正是苹果工程师现在推荐的......例如,第5点.在UITableView中使用自动布局进行动态单元格布局和可变行高度 }

(3)当heightForRowAtIndexPath要求高度时,我确实给它绝对正确的高度.

(4)当我构建单元格时,实际上,我将其构建到正确的高度(如(2)和(3)中所示).

{注意 - 当然iOS最终会调​​整单元格的高度,而不是"我".}

这一切都完美无缺.

也就是说,每个单元格都是由iOS构建的,其高度恰好是heightForRowAtIndexPath中给出的高度.

现在,我添加代码......

-(CGFloat)tableView:(UITableView *)tableView
    estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 120;
}
Run Code Online (Sandbox Code Playgroud)

事实上,表没有更长的工作..................行高成为随机!

有没有人看到这种令人难以置信的行为?

我做了各种各样的测试,试图确定地狱估计的HeightForRowAtIndexPath的作用.起初,我认为它可能提供高度的下限.所以,150 ..甚至我的小细胞都会错误地达到150高度.但事实并非如此.

我认为它可能会做这样的事情:说你的estimatedHeightForRowAtIndexPath值是150.它有时使用150来表示(事实上()实际上是大小或更小的行,但有时它会从heightForRowAtIndexPath获得实际大小.

另一方面,如果你为estimatedHeightForRowAtIndexPath设置了一个小于实际存在的值(在我的例子中说是100),它几乎"完全不起作用"你只是得到了似乎只是随机高度的东西细胞.

非常高的细胞似乎正常工作,也许类似"如果从heightForRowAtIndexPath的高度是估计的两倍,那么它确实使用真正的高度"

要清楚,它似乎从来没有让细胞太小,但它往往使它们太大.

要清楚,我没有使用autolayout,它只是你必须构建的单元格类型.(我担心我不知道自动布局如何.)这只是Xcode5/iOS7 +.

uitableview ios heightforrowatindexpath ios7

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

显示/隐藏UIToolbar,"匹配手指移动",就像在iOS7 Safari中一样

注意:在这里查看Thuy的UINavBar的优秀子类:

/sf/answers/1450425161/

如果你正在解决这个问题,GTScrollNavigationBar接近现成的navBar问题解决方案!


这里50点恩惠,惊人的没有答案.

例如:在2014年的iPhone上,打开Safari,加载任何网页.

查看底部的iOS工具栏.

现在只需移动几个像素就可以上下移动手指.

在此输入图像描述

基本上底部的工具栏会随着手指移动.此外,当您按照特定逻辑滚动页面时,工具栏稍后会出现/消失.

但是交互规则非常复杂,并且在隐藏期间涉及手指开/关,距离匹配,当您在页面下方时的手势,非常短页面的特殊情况等等.

我想要完全复制Apple的行为.

(我们应该与Apple UX相匹配似乎是明智的.)

有没有办法做到这一点?Apple是否为此提供了一个一步的命令,我不知道?或者您是否必须费力地复制这个概念?

谢谢.

顺便说一句,以下逻辑是可靠的,并将大致复制 Apple的方式:

-(void)feedIsScrolled:(CGFloat)scrollNewOverallYPosition
{
// call this routine when scrollViewDidScroll:

self.feedIsScrolledDelta =
 scrollNewOverallYPosition - self.feedIsScrolledPrevious;
self.feedIsScrolledPrevious =
 scrollNewOverallYPosition;

// nb, you do those only in this routine, NOT the following routine.

if ( scrollNewOverallYPosition < 15.0 )
    {
    .. animate in the bar
    return;
    }

if ( self.feedIsScrolledDelta > 0.0 ) …
Run Code Online (Sandbox Code Playgroud)

uiscrollview uitoolbar uigesturerecognizer ios7

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

着色器斜切多维数据集的边缘?

这个问题与使用着色器有关(可能在Unity3D环境中,但是Metal或OpenGL很好),

在网格最小的立方体上实现圆形边缘.

在此输入图像描述

  • 我只想使用12个三角形的极简主义网格立方体,

  • 然后通过着色器,

  • 实现每个块的边缘(/角)略微倾斜.

事实上,这可以用着色器完成吗?

谢谢,着色大师!

shader unity-game-engine

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

用对角线绘制线条填充UIView?

如何填充UIView这样的(用一些对角线绘制的白线).

在此输入图像描述

PS:我的意图是填补而不是边界.

有帮助吗?

core-graphics uiview ios

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

Firebase Analytics 看似运行完美,但就是不显示?

在一个广泛使用 Firebase 的大型应用程序中,我正在尝试分析,

在此输入图像描述

-FIRDebugEnabled设置得很好。

设备上的日期/时间设置正确。

我已经尝试了所有模拟器、系留设备,甚至构建到 TestFlight。

所需的东西在应用程序启动中..

    FirebaseConfiguration.shared.setLoggerLevel(.max)
    FirebaseApp.configure()
    // helps Analytics get going:
    AnalyticsConfiguration.shared().setAnalyticsCollectionEnabled(true)
Run Code Online (Sandbox Code Playgroud)

同样,Firebase 实时和数据库自始至终都能完美运行。

所以使用Analytics.logEvent#...

请注意,这些项目完美地显示在 Xcode 控制台中

2018-07-24 08:27:23.868 Blah[7501] <Debug> [Firebase/Analytics][I-ACS023105] Event is
not subject to real-time event count daily limit. Marking an event as
real-time. Event name, parameters: select_content, {
        firebase_event_origin (_o) = app;
        firebase_realtime (_r) = 1;
        item_name = tapMyProfile;
        firebase_screen_class (_sc) = Blah.SomeScreen;
        firebase_debug (_dbg) = 1;
        firebase_screen_id (_si) = 8314738347840858914;
        item_id = Blah-tapMyProfile;
        content_type = …
Run Code Online (Sandbox Code Playgroud)

ios firebase-analytics

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

Unity,修改标准着色器以随机翻转纹理?

想象一下,十个简单的"立方体"的场景都是一样的.

它们各自具有相同的材料"M1",其具有简单的标准着色器,并且具有简单的PNG作为纹理.

如果你去材料,并调整平铺,

在此输入图像描述

在此输入图像描述

您可以方便地翻转纹理以获得不同的外观.

请注意,这当然会同时更改所有十个立方体.

是否可以修改标准着色器,简单地说,

  • 在每个使用该材料的对象上

  • 着色器随机更改平铺(例如,偏移)

  • 再一次,我的意思是"每个对象" ; 在该示例中,十个中的每一个将随机地不同.

(所以:一个立方体会显示平铺-1,1,一个立方体会显示平铺-1,-1等等......每个立方体都不同,尽管所有立方体都使用相同的材料,只存在一种材料.)

注意,

(1)生成一些不同版本的材料是完全无关紧要的,每个版本都有不同的平铺,并为每个立方体随机选择其中一个.这不是要走的路

(2)请注意,如果您更改了材料,它当然会生成多个副本.你不可能有成千上万的材料.

解决方案是让(一个)着色器知道在着色器内部的每个对象上改变(例如,随机地)偏移量. (即基于每个特定对象)

这就是我在这里问的问题.

shader unity-game-engine

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

removeFromParentViewController - 之后你需要nil吗?

孩子能看到控制者"解雇自己吗?" .....


你有一个视图控制器"RedMessage".你有一个普通的强大财产......

@property(强)RedMessage*红色;

你在当前的VC上添加它("模态")...

self.red = (RedMessage *)[self.storyboard
     instantiateViewControllerWithIdentifier:@"RedMessageID"];
self.red.view.frame = self.view.frame;
[self.view addSubview:self.red.view];
[self addChildViewController:self.red];
[self.red didMoveToParentViewController:self];
Run Code Online (Sandbox Code Playgroud)

要在以后摆脱它,请执行此操作

[self.red willMoveToParentViewController:nil];
[self.red.view removeFromSuperview];
[self.red removeFromParentViewController];
Run Code Online (Sandbox Code Playgroud)

但事实上,你需要这样做吗?

[rm willMoveToParentViewController:nil];
[rm.view removeFromSuperview];
[rm removeFromParentViewController];
rm = nil;
Run Code Online (Sandbox Code Playgroud)

你需要"=零;" ?

请注意,这个问题很关键,因为:如果你没有必须这样做,你可以在新的视图控制器中执行以下操作...

-(void)dismissMyselfCompletely
    {
    [self willMoveToParentViewController:nil];
    [self.view removeFromSuperview];
    [self removeFromParentViewController];
    }
Run Code Online (Sandbox Code Playgroud)

哪个非常方便.

简而言之,如果您在新的顶视图控制器中执行此操作 - 它是否"工作",它是否会释放VC?

当removeFromParentViewController发生时,父VC是否理解它可以释放self.red?

uiviewcontroller ios

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

获取保存到相册的图像文件名

这个看似简单的问题没有引起人们的注意,获得巨额赏金.

在现代iOS(2017)中,

这实际上是我知道将图像保存到iOS照片系统的唯一方法,并获取文件名/路径.

import UIKit
import Photos

func saveTheImage... () {

    UIImageWriteToSavedPhotosAlbum(yourUIImage, self,
        #selector(Images.image(_:didFinishSavingWithError:contextInfo:)),
        nil)
}

func image(_ image: UIImage, didFinishSavingWithError error: NSError?, contextInfo: UnsafeRawPointer) {
    guard error == nil else {
        print("Couldn't save the image!")
        return
    }
    doGetFileName()
}

func doGetFileName() {
    let fo: PHFetchOptions = PHFetchOptions()
    fo.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
    let r = PHAsset.fetchAssets(with: PHAssetMediaType.image, options: fo)
    if let mostRecentThingy = r.firstObject {

        PHImageManager.default().requestImageData(
            for: mostRecentThingy,
            options: PHImageRequestOptions(),
            resultHandler: { (imagedata, dataUTI, …
Run Code Online (Sandbox Code Playgroud)

image ios ios10

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