小编Mar*_*ark的帖子

如何设置将在Facebook上显示为预览的网站图像?

当您在Facebook上分享链接时,它将自动在网站上查找图像并随机选择一个作为预览.你怎么能影响预览图像?当一个人在他的脸书上分享网站链接?

facebook image preview

150
推荐指数
1
解决办法
20万
查看次数

当侧面物品具有不同宽度时,保持中间物品居中

在此输入图像描述

想象一下以下布局,其中圆点表示框之间的空间:

[Left box]......[Center box]......[Right box]
Run Code Online (Sandbox Code Playgroud)

当我移除右边的盒子时,我喜欢中心盒仍然位于中心,如下所示:

[Left box]......[Center box].................
Run Code Online (Sandbox Code Playgroud)

如果我删除左框也是如此.

................[Center box].................
Run Code Online (Sandbox Code Playgroud)

现在,当中心框内的内容变得更长时,它将占用尽可能多的可用空间,同时保持居中.左边和右边框将永远不会收缩,因此当没有剩余空间的地方overflow:hidden,并text-overflow: ellipsis会在效果打破了内容;

[Left box][Center boxxxxxxxxxxxxx][Right box]
Run Code Online (Sandbox Code Playgroud)

以上都是我理想的情况,但我不知道如何实现这个效果.因为当我创建一个像这样的flex结构时:

.parent {
    display : flex; // flex box
    justify-content : space-between; // horizontal alignment
    align-content   : center; // vertical alignment
}
Run Code Online (Sandbox Code Playgroud)

如果左右框的大小完全相同,我会得到所需的效果.然而,当两者中的一个来自不同尺寸时,居中的盒子不再真正居中.

有没有人可以帮助我?

更新

A justify-self会很好,这将是理想的:

.leftBox {
     justify-self : flex-start;
}

.rightBox {
    justify-self : flex-end;
}
Run Code Online (Sandbox Code Playgroud)

html css css3 centering flexbox

129
推荐指数
9
解决办法
4万
查看次数

UITableView灵活/动态heightForRowAtIndexPath

案件

通常,您将使用cellForRowAtIndexPath委托方法来设置您的单元格.为单元格设置的信息对于单元格的绘制方式以及大小的大小非常重要.

不幸的是,在heightForRowAtIndexPath委托方法之前调用cellForRowAtIndexPath委托方法,因此我们不能简单地告诉委托返回单元格的高度,因为那时它将为零.

因此,我们需要在表格中绘制单元格之前计算大小.幸运的是,有一种方法可以实现sizeWithFont,它属于NSString类.然而,存在问题,为了动态地计算正确的大小,它需要知道如何呈现单元中的元素.我将在一个例子中说明这一点:

想象一下UITableViewCell,它包含一个名为的标签textLabel.在cellForRowAtIndexPath我们放置的委托方法中textLabel.numberOfLines = 0,它基本上告诉标签它可以具有尽可能多的行以呈现特定宽度的文本.如果我们为textLabel提供一个大于最初赋予textLabel的宽度的文本,则会出现问题.第二行将出现,但单元格的高度不会自动调整,因此我们得到一个混乱的查看表视图.

正如前面所说的,我们可以用sizeWithFont计算出的高度,但它需要知道使用哪种字体,为,什么宽度等.如果,为了简单起见,我们只关心宽度,我们可以硬编码的宽度将约为320.0(不考虑填充).但是如果我们使用UITableViewStyleGrouped而不是普通的宽度那么将会发生大约300.0并且单元格将再次混乱.或者如果我们从纵向交换到横向,我们有更多的空间,但由于我们硬编码300.0,它将不会被使用.

在这种情况下,你必须问自己一个问题,你可以避免多少硬编码.

我自己的想法

您可以调用cellForRowAtIndexPath属于UITableView类的方法来获取特定节和行的单元格.我读了几篇帖子说你不想那样做,但我真的不明白.是的,我同意它已经分配了单元格,但heightForRowAtIndexPath委托方法只调用可见的单元格,因此无论如何都将分配单元格.如果正确使用,dequeueReusableCellWithIdentifier则不会在cellForRowAtIndexPath方法中再次分配单元格,而是使用指针并仅调整属性.那有什么问题呢?

请注意,单元格未在cellForRowAtIndexPath委托方法中绘制,当表格视图单元格变为可见时,脚本将调用setNeedDisplayUITableVieCell上的drawRect方法,该方法将触发绘制单元格的方法.所以cellForRowAtIndexPath直接调用代理不会失去性能,因为它需要被绘制两次.

好的,通过在cellForRowAtIndexPath委托方法中调用heightForRowAtIndexPath委托方法,我们可以获得有关单元格的所有信息,以确定它的大小.

也许你可以创建自己的sizeForCell方法来运行所有选项,如果单元格是Value1样式,或者Value2,等等.

结论/问题

这只是我在思想中描述的理论,我想知道我写的是不是正确的.或者也许还有另一种方法来完成同样的事情.请注意,我希望能够尽可能灵活地做事.

iphone uitableview

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

UITableView dequeueReusableCellWithIdentifier Theory

当苹果UITableView为第一款iPhone 开发时,他们在滚动浏览时会遇到性能问题.然后,一位聪明的工程师发现,造成这种情况的原因是物品的分配需要付出代价,因此他想出了一种重用细胞的方法.

"对象分配具有性能成本,特别是如果分配必须在短时间内重复发生 - 例如,当用户滚动表视图时.如果重用单元而不是分配新单元,则可以大大提高表视图性能."

来源:iOS参考图书馆

要重用您使用的单元格:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
Run Code Online (Sandbox Code Playgroud)

现在,我想知道的是,这里究竟发生了什么?如果有一个具有该标识符的单元格并且只返回那个标识符,它是否在TableView中查找?好吧,但是,如果它发送一个引用而不是分配,我有一个表视图,让我们说4个具有相同标识符的单元格都可见.如何在不分配的情况下将自身增加到四个实例中?

我想知道这一点,因为我正在构建一个日历类型组件,并且所有单元格只有更改中的文本具有相同的结构.所以,如果我能以某种方式重用我的细胞而不是分配,我想我可能会获得更好的表现.

我自己的理论是它分配了四个细胞(仅仅因为它也有).当一个单元格从屏幕上消失时,它将被放入TableView重用队列中.当需要一个新的单元时,它会在que中查找具有相同标识符的单元是否可用,它会调用prepareForReuse该单元上的方法并将其自身从队列中删除.

iphone uitableview reuseidentifier

33
推荐指数
2
解决办法
3万
查看次数

IMG标签上的奇怪边框

HTML:

<html>
<body>

<header>
    <img class="logo" />
</header>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

CSS:

* {
    margin:0px;
    padding:0px;
    border:none;
}

img.logo {
    width:126px;
    height:50px;
    background-image:url('images/logo.png');
}
Run Code Online (Sandbox Code Playgroud)

每次我尝试为这样的IMG设置样式时会出现一个奇怪的边框.即使我会放置边框:0px; 或边界:无; 在img.logo css中,边界仍然存在.

html css image border

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

如何禁用iOS网络应用中的橡皮筋?

这个:

$('body').on('touchmove', function(e) { e.preventDefault(); });
Run Code Online (Sandbox Code Playgroud)

可以工作,但会禁用整个页面的滚动,这远非理想.

这个:

$('*').on('touchstart', function(e){
    var element = $(this).get(0);

    if ( element.scrollTop <= 0 )                                           element.scrollTop = 1;
    if ( element.scrollTop + element.offsetHeight >= element.scrollHeight ) element.scrollTop = element.scrollHeight - element.offsetHeight - 1;
});
Run Code Online (Sandbox Code Playgroud)

适用于具有滚动区域的页面.然而,当没有任何东西要滚动时,它将再次显示橡皮筋.

所以我的问题:

如何禁用橡皮筋效果并保持-webkit-overflow-scrolling区域可滚动?

[更新]

最佳方案

禁用所有不可滚动元素(如选项卡栏或导航栏)上的滚动.

anElement.addEventListener('touchmove', function( event ){ event.preventDefault() };
Run Code Online (Sandbox Code Playgroud)

将滚动处理程序附加到可滚动元素(例如主要内容).

anElement.addEventListener('touchstart', function( event ){
        if( this.scrollTop === 0 ) {
            this.scrollTop += 1;
        } else if( this.scrollTop + this.offsetHeight >= this.scrollHeight ) {
            this.scrollTop -= 1; …
Run Code Online (Sandbox Code Playgroud)

jquery web-applications rubber-band

27
推荐指数
2
解决办法
3万
查看次数

iPhone TCP/IP套接字服务器/客户端程序

我在这个网站上已经阅读了很多关于这个主题的问题,但他们并没有安静地回答我的问题.如果你不能###关于我的目标或背景,请跳过这个问题.

我的目标

是构建一个可以在Mac OS X 10.4及更高版本上运行的服务器,将其移植到Windows XP/Vista(不知道如何做到这一点,但这是以后的问题).

然后让iPhone成为能够查看运行服务器的计算机名称(通过WiFi)的客户端.然后,iPhone的用户可以选择计算机名称以连接到该计算机上的服务器.

之后,他们可以相互发送简单的短信.例如,iPhone发送'Knock Knock'并且服务器响应'谁在那里?'.或者一个简单的客户端:'Ping',服务器响应'Pong'就行了.

背景

我以前使用套接字,但只有在使用WINSOCKET.dll的Visual Basic 6中才能很容易地创建TCP/IP服务器.

server.host = localhost;
server.port = 12203;
server.listen(); 
Run Code Online (Sandbox Code Playgroud)

对于客户端,我只需要执行以下连接.

client.connect(localhost, 12203);
Run Code Online (Sandbox Code Playgroud)

有一些回调可用,如connect,close,dataArrival等,我可以用来做我想做的任何事情.

也许对于iPhone来说,有为它编写的库,但是自己创建这个简单的应用程序是否很难?在做了一些研究后,我明白我必须查看CFNetwork,CFHost,CFSocket,CFStream等领域.

是否有人可以指导我阅读教程或发布iPhone上有两个按钮的代码.[Start Server]和[Connect to Server],第一个将在某个端口上启动TCP/IP服务器,第二个连接到它.

在建立连接之后,也可能是在服务器收到此消息后向服务器发送简单的"Ping"消息的代码,并向客户端发送"Pong"消息.

这真的很有帮助.但也许我在这里要求很多.

sockets iphone connection communication

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

如何避免我的 Swift 异步方法在 SwiftUI 的主线程上运行?

我观看了所有关于 async/await (和演员)的视频,但我仍然有点困惑。

因此,假设我有一个异步方法:func postMessage(_ message: String) async throws并且我有一个简单的 SwiftUI 视图。

@MainActor 
struct ContentView: View {
    @StateObject private var api = API()
    
    var body: some View {
        Button("Post Message") {
            Task {
                do {
                    try await api.postMessage("First post!")
                } catch {
                    print(error)
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里,我明确告诉 SwiftUI 使用 ,@MainActor尽管我知道它会从 推断出来@StateObject

据我了解,由于我们使用该@MainActor工作是在主线程上完成的。这意味着任务上的工作也将在主线程上完成。这不是我想要的,因为上传过程可能需要一些时间。在这种情况下,我可以Task.detached使用不同的线程。这就能解决它。如果我的理解是正确的话。

现在让它变得更复杂一点。如果... postMessage 会返回一个整数形式的帖子标识符,并且我想在视图中呈现它,该怎么办?

struct ContentView: View {
    @StateObject private var api = API()
    @State private var identifier: …
Run Code Online (Sandbox Code Playgroud)

concurrency task swift swiftui

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

MKMapView路线/方向

我发现Google Maps API支持路线:

var map;
var directionsPanel;
var directions;

function initialize() {
  map = new GMap2(document.getElementById("map_canvas"));
  directionsPanel = document.getElementById("my_textual_div");
  map.setCenter(new GLatLng(49.496675,-102.65625), 3);
  directions = new GDirections(map, directionsPanel);
  directions.load("from: 500 Memorial Drive, Cambridge, MA to: 4 Yawkey Way, Boston, MA 02215 (Fenway Park)");
}
Run Code Online (Sandbox Code Playgroud)

那么如何将其转换为Objective-C,以便iPhone可以检索它?我知道如何在MKMapView上画一条线我只需要路线的地理位置.

或者也许有一种不同的方式来获得两个地理位置点之间的路线.

请告诉我,

提前致谢.

iphone direction mkmapview map-directions

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

Objective-C/iPhone内存管理静态变量

我有一个静态方法,它创建一个类的实例并将其放在静态变量中.我想知道在这种情况下,内存管理的正确方法是什么.

你不能把它放在dealloc方法中,因为虽然它可以访问静态变量,但任何创建的实例方法都会释放getInstance.

我想可能有一个创建静态破坏方法的选项,它将手动释放内存,并且可以由appWillTerminate用户调用,但这看起来有点奇怪.

那么,问题是: 释放静态变量的正确方法是什么?


// MyClass.m
#import "MyClass.h"

static MyClass *myClass; // How to properly do memory management

@implementation MyClass

+ (MyClass *)sharedMyClass {
    if (myClass == nil) myClass = [[MyClass alloc] init];
    return myClass;
}
@end
Run Code Online (Sandbox Code Playgroud)

iphone variables static memory-management objective-c

12
推荐指数
2
解决办法
8544
查看次数