首页 \ 问答 \ 如何在uitableviewcell中创建阴影效果?(How to create shadow effect in uitableviewcell?)

如何在uitableviewcell中创建阴影效果?(How to create shadow effect in uitableviewcell?)

我正在开发一个应用程序,其中我想创建类似于底部uitableviewcell中下图所示的阴影效果。

在这里输入图像描述

我该怎么做?任何教程或示例代码? 我检查了http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html,http://www.touchthatfruit.com/?tag=uitableview和其他一些,但他们在底部有阴影与相同高度的uitableview。以及如何在包含日期的每个部分的边框处添加阴影(而不是整个tableview)。我可以在底部创建下拉阴影。但是,每个部分的最后一个uitableview单元格的边框怎么样?一种方法是创建图像并将其设置为tableviewcell的背景。但如何调整图像大小并使其看起来合适,因为每个部分都有动态数量的条目。一个部分只有1个条目,其他部分可能包含15个或更多条目。这里的图像是包含日期的整个部分).i可以为每个部分的最后一个tableviewcell提供单独的图像。这是我知道的。但是有没有更好的方法或以编程方式进行?


i am developing one application in which i want to create shadow effect similar to shown in below image at bottom uitableviewcell.

enter image description here

How can i do that?any tutorial or sample code? I have checked http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html, http://www.touchthatfruit.com/?tag=uitableview and some other ones.but they have shadow at bottom of uitableview with same height.and how to add shadow at side borders of each section containing the date(not the entire tableview).I can create the dropdown shadow at bottom.but what about side borders of last uitableview cell of each section.and one way is creating the image and setting it as background of tableviewcell.But how to resize the image and will it look proper because each section has dynamic number of entries.one section only have 1 entry and other may contain 15 or more entries.(here image is for entire section which contains date).i can have seperate image for only last tableviewcell of each section.This is i know.but is there any better approach or do it programatically?


原文:https://stackoverflow.com/questions/7346513
更新时间:2023-12-01 11:12

最满意答案

找到了许多技巧的方法,适用于任何服务

首先运行svr,然后运行cli并测试。

public class PlayHZ
{
    @Test
    public void test() throws ExecutionException, InterruptedException
    {
        HazelcastInstance hz = Hazelcast.newHazelcastInstance();
        IExecutorService executor = hz.getExecutorService("gather");
        Map<Member, Future<List<String>>> futures = executor.submitToAllMembers(new LockNameGather());
        Thread.sleep(1000);
        System.out.println("Found in member");
        for (Map.Entry<Member, Future<List<String>>> entry : futures.entrySet())
        {
            System.out.printf("%s -> %s\n", entry.getKey(), entry.getValue().get());
        }
    }

    @Test
    public void svr() throws InterruptedException
    {
        HazelcastInstance hz = Hazelcast.newHazelcastInstance();
        Thread.sleep(Integer.MAX_VALUE);
    }

    @Test
    public void cli() throws InterruptedException
    {
        HazelcastInstance hz = Hazelcast.newHazelcastInstance();
        for (int i = 0; i < 100; i++)
        {
            ILock lock = hz.getLock("LOCK" + i);
            lock.lock();
        }
        Thread.sleep(Integer.MAX_VALUE);
    }

    private static class LockNameGather implements Callable<List<String>>, HazelcastInstanceAware, Serializable
    {
        transient HazelcastInstance hz;
        transient NodeEngineImpl node;

        @Override
        public List<String> call() throws Exception
        {
            node = ((HazelcastInstanceImpl) hz).node.getNodeEngine();
            LockService svc = node.getService(LockService.SERVICE_NAME);

            return svc.getAllLocks()
                      .stream()
                      .map(LockResource::getKey)
                      .map(d -> node.getSerializationService().createObjectDataInput(d))
                      .map((r) -> {
                          try
                          {
                              return r.readUTF();
                          } catch (IOException e)
                          {
                              throw new RuntimeException(e);
                          }
                      }).collect(Collectors.toList());
        }

        @Override
        public void setHazelcastInstance(HazelcastInstance hazelcastInstance)
        {
            hz = hazelcastInstance;
        }
    }
}

Found a way with many tricks,works with any service

Run svr first, then run cli and test.

public class PlayHZ
{
    @Test
    public void test() throws ExecutionException, InterruptedException
    {
        HazelcastInstance hz = Hazelcast.newHazelcastInstance();
        IExecutorService executor = hz.getExecutorService("gather");
        Map<Member, Future<List<String>>> futures = executor.submitToAllMembers(new LockNameGather());
        Thread.sleep(1000);
        System.out.println("Found in member");
        for (Map.Entry<Member, Future<List<String>>> entry : futures.entrySet())
        {
            System.out.printf("%s -> %s\n", entry.getKey(), entry.getValue().get());
        }
    }

    @Test
    public void svr() throws InterruptedException
    {
        HazelcastInstance hz = Hazelcast.newHazelcastInstance();
        Thread.sleep(Integer.MAX_VALUE);
    }

    @Test
    public void cli() throws InterruptedException
    {
        HazelcastInstance hz = Hazelcast.newHazelcastInstance();
        for (int i = 0; i < 100; i++)
        {
            ILock lock = hz.getLock("LOCK" + i);
            lock.lock();
        }
        Thread.sleep(Integer.MAX_VALUE);
    }

    private static class LockNameGather implements Callable<List<String>>, HazelcastInstanceAware, Serializable
    {
        transient HazelcastInstance hz;
        transient NodeEngineImpl node;

        @Override
        public List<String> call() throws Exception
        {
            node = ((HazelcastInstanceImpl) hz).node.getNodeEngine();
            LockService svc = node.getService(LockService.SERVICE_NAME);

            return svc.getAllLocks()
                      .stream()
                      .map(LockResource::getKey)
                      .map(d -> node.getSerializationService().createObjectDataInput(d))
                      .map((r) -> {
                          try
                          {
                              return r.readUTF();
                          } catch (IOException e)
                          {
                              throw new RuntimeException(e);
                          }
                      }).collect(Collectors.toList());
        }

        @Override
        public void setHazelcastInstance(HazelcastInstance hazelcastInstance)
        {
            hz = hazelcastInstance;
        }
    }
}

相关问答

更多
  • TomEE 7在加号版本中内置了JCS( https://commons.apache.org/proper/commons-jcs/ ),也是一个很好的开始 TomEE 7 has JCS built in (https://commons.apache.org/proper/commons-jcs/) in the plus version, can be a good start too
  • Hazelcast旨在成为一个分布式系统。 它不是设计为进程内缓存。 由于分布式特性,设计决策可能不会使其成为您的用例的良好候选者。 您将看到序列化和网络的开销(即使在本地单节点嵌入模式下)。 我们计划通过为本地缓存用例提供优化来改善这种情况,但此时没有ETA。 在接下来的几个版本中,您将看到与此用例相关的一些功能。 我建议看看咖啡因 。 它具有JCache和Spring Boot集成。 我建议坚持JCache集成,因为它会使你的代码可移植。 如果您将来决定分发,您只需要用Hazelcast替换咖啡因罐。 ...
  • 我认为它得到了支持。 你可以在这里找到一个例子: https : //github.com/hazelcast/hazelcast/blob/master/hazelcast-spring/src/test/resources/com/hazelcast/spring/fullcacheconfig-applicationContext-hazelcast.xml#L309 I think it is supported. You can find an example here: https://gith ...
  • 我更改了从v3.8到v3.4.2的hazelcast版本,并且速度更快(2分钟!) I changed hazelcast version I went from v3.8 to v3.4.2 and it is significantly faster (2 minutes !)
  • 我的build.sbt中有一个jackst库的mergeStrategy。 删除它已解决了这个问题。 I have a mergeStrategy for jackson libraries in my build.sbt. Removing it has resolved the issue.
  • 我认为我的错误是在我的实际Java代码中,而不是在配置文件中: 在我的所有初始测试中,在单个服务器上运行服务,我使用它来获取当前的Shiro用户: Subject currentUser = SecurityUtils.getSubject(); 但是,由此产生的会话密钥对于一个服务器上的同一用户是相同的,但对于不同服务器上的相同用户是不同的; 并且会话密钥用于标识缓存中的会话。 我原本希望能够不必传递会话密钥和REST调用。 但如果我显式传递会话密钥然后使用它来获取当前用户,则可以在不同的服务器中成功识 ...
  • 你可以这样做,但Hazelcast打开的端口不会在Tomcat打开的连接上运行。 Hazelcast打开自己的连接,这些连接独立于Tomcat的http连接器。 Hazelcast使用的协议不是基于http的,它支持memcache ascii协议。 即使是为Hazelcast设计的新二进制客户端协议也没有改变这一点: http : //docs.hazelcast.org/docs/protocol/1.0-developer-preview/client-protocol.html 因此,如果您需要安全 ...
  • 通过首先应用模式检查和其他验证来确保值有意义,这在Hazelcast的更高版本中得到修复。 请升级,特别是因为在以后的版本中修复了严重的问题。 This is fixed at later versions of Hazelcast by applying a schema check first and additional validations to make sure values make sense. Please upgrade, especially since there were ser ...
  • 第一步还可以,只需将Hazelcast lib和配置放在Tomcat的libs文件夹中。 接下来,如果您不想要单独的WAR文件,那就是构建一个启动/关闭Hazelcast节点的小型Valve类。 问题是:你想用这个来实现什么,因为在实际应用中你可能需要访问Hazelcast实例本身(应该可以将它作为属性放在HttpRequest中)。 克里斯 First step was ok, just place Hazelcast lib and configuration inside the libs folde ...
  • 最好的答案是3或4.当我在游戏行业工作时,我使用Hazelcast不是作为缓存而是分发/集群游戏服务器本身。 因此,我的游戏服务器本身就是集群的一部分。 如果你想拥有一个专用的db-cache集群,只需使用一个客户端,与游戏服务器一起启动它,并在游戏服务器本身存活的同时使其保持活动状态。 它在内部汇集,客户端足够智能,几乎在所有情况下都可以将请求路由到正确的集群节点。 如果你想将它用于不仅仅是缓存,我会将游戏服务器作为集群本身的一个节点。 请记住,每个节点都包含一部分数据,这可能不是游戏服务器充当数据库缓存 ...

相关文章

更多

最新问答

更多
  • h2元素推动其他h2和div。(h2 element pushing other h2 and div down. two divs, two headers, and they're wrapped within a parent div)
  • 创建一个功能(Create a function)
  • 我投了份简历,是电脑编程方面的学徒,面试时说要培训三个月,前面
  • PDO语句不显示获取的结果(PDOstatement not displaying fetched results)
  • Qt冻结循环的原因?(Qt freezing cause of the loop?)
  • TableView重复youtube-api结果(TableView Repeating youtube-api result)
  • 如何使用自由职业者帐户登录我的php网站?(How can I login into my php website using freelancer account? [closed])
  • SQL Server 2014版本支持的最大数据库数(Maximum number of databases supported by SQL Server 2014 editions)
  • 我如何获得DynamicJasper 3.1.2(或更高版本)的Maven仓库?(How do I get the maven repository for DynamicJasper 3.1.2 (or higher)?)
  • 以编程方式创建UITableView(Creating a UITableView Programmatically)
  • 如何打破按钮上的生命周期循环(How to break do-while loop on button)
  • C#使用EF访问MVC上的部分类的自定义属性(C# access custom attributes of a partial class on MVC with EF)
  • 如何获得facebook app的publish_stream权限?(How to get publish_stream permissions for facebook app?)
  • 如何防止调用冗余函数的postgres视图(how to prevent postgres views calling redundant functions)
  • Sql Server在欧洲获取当前日期时间(Sql Server get current date time in Europe)
  • 设置kotlin扩展名(Setting a kotlin extension)
  • 如何并排放置两个元件?(How to position two elements side by side?)
  • 如何在vim中启用python3?(How to enable python3 in vim?)
  • 在MySQL和/或多列中使用多个表用于Rails应用程序(Using multiple tables in MySQL and/or multiple columns for a Rails application)
  • 如何隐藏谷歌地图上的登录按钮?(How to hide the Sign in button from Google maps?)
  • Mysql左连接旋转90°表(Mysql Left join rotate 90° table)
  • dedecms如何安装?
  • 在哪儿学计算机最好?
  • 学php哪个的书 最好,本人菜鸟
  • 触摸时不要突出显示表格视图行(Do not highlight table view row when touched)
  • 如何覆盖错误堆栈getter(How to override Error stack getter)
  • 带有ImageMagick和许多图像的GIF动画(GIF animation with ImageMagick and many images)
  • USSD INTERFACE - > java web应用程序通信(USSD INTERFACE -> java web app communication)
  • 电脑高中毕业学习去哪里培训
  • 正则表达式验证SMTP响应(Regex to validate SMTP Responses)