小编fra*_*yer的帖子

如何根据内容在可变高度UITableView内确定UIWebView高度?

我正在尝试创建一个UITableView可变高度行,如本问题的答案中所述

我的问题是每个单元格包含一个UIWebView具有不同(静态加载)的内容我无法弄清楚如何根据内容计算合适的高度.有没有办法做到这一点?我尝试过这样的事情:

   (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
       WebViewCell *cell = (WebViewCell*)[self tableView:tableView cellForRowAtIndexPath:indexPath];
       [cell setNeedsLayout];
       [cell layoutIfNeeded];
       return cell.bounds.size.height;
    }
Run Code Online (Sandbox Code Playgroud)

细胞本身是从笔尖加载的,笔尖只是一个UITableViewCell含有a 的笔尖UIWebView.(如果细胞只是将自己调整到html内容的最大值,那也没关系,尽管可变高度会更好).

iphone cocoa-touch uiwebview uitableview ios

69
推荐指数
3
解决办法
7万
查看次数

如何在iphone上完成透明度的圆角矩形视图?

许多应用程序在运行耗时的操作时会弹出带圆角的透明视图和activityIndi​​cator.

这个舍入是如何完成的,是否可以使用Interface Builder来实现(因为有很多地方我想使用这样的东西)?或者,我应该使用带有圆形rect或可伸缩图像的imageview吗?我需要自己画背景吗?

到目前为止,我已经设法通过在Interface Builder中设置alphaValue来获得具有相似透明度的基本视图,但它没有圆角,并且透明度似乎也适用于所有子视图(我不想要text和activityindicator透明,但即使我在IB中设置alphaValue似乎也被忽略了).

iphone cocoa-touch rounded-corners

39
推荐指数
5
解决办法
3万
查看次数

如何安全地关闭viewWillDisappear中的加载UIWebView?

我有一个包含UIWebView的视图,它正在加载一个谷歌地图(所以很多javascript等).我遇到的问题是,如果用户在Web视图加载完之前点击导航栏上的"后退"按钮,我不清楚如何整理地告诉Web视图停止加载然后释放它,而不是获取发送到解除分配的实例的消息.我也不确定网页视图是否喜欢它的容器视图在它完成之前消失(但是如果用户在加载之前点击后退按钮,我别无选择).

在我的viewWillDisappear处理程序中我有这个

map.delegate=nil;
[self.map stopLoading];
Run Code Online (Sandbox Code Playgroud)

这似乎可以处理大多数情况,因为nil'ing委托停止它将didFailLoadWithError发送到我的视图控制器.但是,如果我在视图的dealloc方法中释放Web视图,有时(间歇性地)我仍会收到发送到解除分配的实例的消息,这似乎与在实际页面中运行的javascript有关,例如:

-[UIWebView webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:]: message sent to deallocated instance 0x4469ee0
Run Code Online (Sandbox Code Playgroud)

如果我只是不发布webview,那么我不会收到这些消息,但我想我正在泄漏webview.

如果我没有发送'stopLoading'消息,只是在viewWillDisappear中发布webview,那么我会看到如下消息:

/SourceCache/WebCore/WebCore-351.9.42/wak/WKWindow.c:250 WKWindowIsSuspendedWindow:  NULL window.
Run Code Online (Sandbox Code Playgroud)

可能相关,我有时(再次完全断断续续)得到一个丑陋的heisenbug,点击其他视图的导航栏上的后退按钮将弹出标题,但不是视图.换句话说,我在堆栈上留下了视图n的标题,但是显示的视图仍然是视图n + 1(结果是你被困在这个屏幕上并且无法返回到根视图 - 你可以去其他方向,即推送更多视图并弹回到没有正确弹出的视图,只是不到根视图.唯一的出路是退出应用程序).在其他时候,相同视图上的推送和弹出的相同序列工作正常.

这个特别的一个让我疯了.我认为它可能与视图在加载Web视图之前消失有关,即在这种情况下我怀疑它可能会在内存上乱写并混淆视图堆栈.或者,这可能是完全不相关的,而且是其他地方的错误(我从来没有能够在调试构建模式下重现它,只有当我无法使用gdb观看它时才会发布版本设置:-).从我的调试运行开始,我认为我不会过度发布任何内容.而且我似乎只能触发它,如果在某些时候我已经点击了具有Web视图的视图,并且在此之后不会立即发生.

iphone cocoa-touch uiwebview

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

限制REST API用户的最佳做法?

我正在整理一个REST API,因为我不确定它将如何扩展或对它的需求是什么,我希望能够对它的限制使用率以及能够暂时拒绝请求时框已超出容量或者是否存在某种slashdotted方案.

我还希望能够优雅地暂时关闭服务(同时向客户端提供表明主服务稍微离线的结果)当/如果我需要通过添加更多容量来扩展服务时.

对于这种事情,有没有最佳做法?使用mysql实现Rails.

rest scaling ruby-on-rails capacity

30
推荐指数
2
解决办法
9554
查看次数

是否值得使用iphone上的简单sqlite应用程序的核心数据与一个表,没有关系或复杂的子表/视图?

从现在开始应该使用核心数据作为带有sqlite单表数据库的小型iphone应用程序的包装器吗?

从现在开始使用它是不必要地使事情变得复杂还是好的做法?

sqlite iphone core-data

17
推荐指数
2
解决办法
5157
查看次数

如何以编程方式替换IB中内置的UIToolBar项

我有一个带有各种图像按钮的工具栏,在Interface Builder中创建.

我希望能够以编程方式在按下时用活动指示器替换其中一个按钮,然后放回原始按钮,但在活动完成时将其颜色从白色更改为黄色.

是否可以使用IB构建的工具栏,或者我是否必须以编程方式和自定义视图构建整个工具栏?

iphone interface-builder uitoolbar

12
推荐指数
1
解决办法
3万
查看次数

为rails应用程序构建iphone客户端的最佳方法是什么?

我有一个相当标准的rails应用程序,并希望能够从iPhone应用程序访问基本的CRUD(创建,更新,删除)操作以及我添加的查询.Rails或多或少开箱即可为这些操作提供REST API.

在iphone上处理REST/XML部分的最佳方法是什么,有没有任何好的Objective-C库已经做过这种事情了?操作还需要与特定用户相关联(即经过身份验证).

xml iphone rest ruby-on-rails objective-c

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

适用于iphone应用程序的"约"文本中的超链接

我正处于我的第一个简单的iPhone应用程序的最后阶段.我正在构建一个"约"视图,包含信用/信息/等.

我在最简单的事情上失败了:如何在文本中嵌入超链接?我目前正在使用带有UILabel的UIView作为文本.

我已经看过这里和示例应用程序,但没有到达任何地方.我应该使用UIWebView吗?

谢谢.

iphone cocoa-touch

8
推荐指数
2
解决办法
8938
查看次数

为什么这个rails查询的行为取决于时区?

我有一个基于时间的rails查询,它有一些奇怪的时区敏感行为,即使据我所知我使用的是UTC.简而言之,这些查询给出了不同的答案:

>> Model.find(:all,:conditions=>['created_at<=?',(Time.now-1.hours).gmtime]).length
=> 279
>> Model.find(:all,:conditions=>['created_at<=?',(Time.now-1.hours)]).length
=> 280
Run Code Online (Sandbox Code Playgroud)

DB实际上确实包含在过去一小时内创建的一个模型,并且模型的总数为280.因此只有第一个查询是正确的.

但是,在environment.rb中我有:

config.time_zone = 'UTC'
Run Code Online (Sandbox Code Playgroud)

系统时区(由'日期'报告)是BST(GMT + 1) - 因此不知何故,这会被视为UTC并打破查询.

这引起了我各种各样的问题,因为我需要将在不同时间传递的查询参数化为一个动作(然后使用Time.parse()进行转换),即使我以UTC时间发送,这个'关闭一小时'DST问题很多.即使使用'.gmtime()'也似乎无法解决它.

显然,这种差异是由某个地方的隐式转换造成的,导致BST被错误地视为UTC,但为什么呢?rails是否以UTC格式存储时间戳?Time class timezone不是很清楚吗?我正在使用Rails 2.2.2

那么这里发生了什么 - 围绕它编程的安全方法是什么?

编辑,一些额外的信息来显示DB和Time类正在做什么:

>> Model.find(:last).created_at
=> Tue, 11 Aug 2009 20:31:07 UTC +00:00
>> Time.now
=> Tue Aug 11 22:00:18 +0100 2009
>> Time.now.gmtime
=> Tue Aug 11 21:00:22 UTC 2009
Run Code Online (Sandbox Code Playgroud)

timezone datetime ruby-on-rails dst

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

如何减小iphone的sqlite3数据库的大小?

编辑:非常感谢所有的答案.以下是目前应用优化后的结果:

  • 切换到排序字符和运行长度编码 - 新的数据库大小42M
  • 删除布尔值上的索引 - 新的DB大小为33M

非常好的部分是这不需要在iphone代码中进行任何更改

我有一个iphone应用程序,其中包含一个以sqlite格式保存的大型字典(只读).我正在寻找减少DB文件大小的想法,目前这个文件非常大.

以下是sqlite DB的条目数和结果大小:

franks-macbook:DictionaryMaker frank$ ls -lh dictionary.db
-rw-r--r--  1 frank  staff    59M  8 Oct 23:08 dictionary.db
franks-macbook:DictionaryMaker frank$ wc -l dictionary.txt
  453154 dictionary.txt
Run Code Online (Sandbox Code Playgroud)

...每个条目平均大约135个字节.

这是我的数据库架构:

create table words (word text primary key, sowpods boolean, twl boolean, signature text)
create index sowpods_idx on words(sowpods)
create index twl_idx on words(twl)
create index signature_idx on words(signature)
Run Code Online (Sandbox Code Playgroud)

以下是一些示例数据:

photoengrave|1|1|10002011000001210101010000
photoengraved|1|1|10012011000001210101010000
photoengraver|1|1|10002011000001210201010000
photoengravers|1|1|10002011000001210211010000
photoengraves|1|1|10002011000001210111010000
photoengraving|1|1|10001021100002210101010000
Run Code Online (Sandbox Code Playgroud)

最后一个字段表示字谜检索的字母频率(每个位置在0..9范围内).两个布尔代表子词典.

我需要做以下的查询:

select signature from words where word = 'foo'
select …
Run Code Online (Sandbox Code Playgroud)

ruby compression sqlite iphone

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