Программирование на iPhone: применение альфы к родительскому виду, но не к дочерним представлениям

Использование join (в случае связей это приведет к более чем одной строке в группе):

import pyspark.sql.functions as F
from pyspark.sql.functions import count, col 

cnts = df.groupBy("id_sa", "id_sb").agg(count("*").alias("cnt")).alias("cnts")
maxs = cnts.groupBy("id_sa").agg(F.max("cnt").alias("mx")).alias("maxs")

cnts.join(maxs, 
  (col("cnt") == col("mx")) & (col("cnts.id_sa") == col("maxs.id_sa"))
).select(col("cnts.id_sa"), col("cnts.id_sb"))

Использование оконных функций (приведет к удалению связей):

from pyspark.sql.functions import row_number
from pyspark.sql.window import Window

w = Window().partitionBy("id_sa").orderBy(col("cnt").desc())

(cnts
  .withColumn("rn", row_number().over(w))
  .where(col("rn") == 1)
  .select("id_sa", "id_sb"))

Использование порядка struct:

from pyspark.sql.functions import struct

(cnts
  .groupBy("id_sa")
  .agg(F.max(struct(col("cnt"), col("id_sb"))).alias("max"))
  .select(col("id_sa"), col("max.id_sb")))

См. также Как выбрать первую строку каждой группы?

29
задан Mustafa 17 October 2009 в 11:27
поделиться

4 ответа

Родитель, выступающий в качестве вашего фона, должен быть заменен на родного брата перед контейнером, в который обернуты ваши дети. Таким образом, вы можете установить прозрачность, не затрагивая всю иерархию.

Это будет выглядеть так.

  • <item-container>
    • <item-background>
    • <children-container>
      • <children/>

    Эта иерархия будет иметь тот же порядок видимости и позволит вам установить прозрачность независимо от содержимого дочернего контейнера.

30
ответ дан John Leidegren 17 October 2009 в 11:27
поделиться

Я знаю, что это поздний ответ, и что-то уже принято, но я нашел лучшее решение для меня - не устанавливать прозрачность UIView напрямую, а вместо этого установить цвет фона на 0,0, 0,0, делая цвет полностью прозрачным.

3
ответ дан MarkPowell 17 October 2009 в 11:27
поделиться

Один более простой способ также возможен, не делая взгляды братьев и сестер. Не устанавливайте альфа непосредственно в родительском представлении. Вместо этого используйте

[parentView setBackgroundColor:[[UIColor clearColor] colorWithAlphaComponent:0.5]];

Теперь любой дочерний вид может иметь свой собственный цвет и НЕ будет прозрачным.

В Swift это будет

parentView.backgroundColor = UIColor.clearColor().colorWithAlphaComponent(0.7)
71
ответ дан Undo 17 October 2009 в 11:27
поделиться

Не на 100% уверен, что вы пытаетесь сделать, но если вы хотите иметь контейнер с прозрачным фоном, вы можете сделать это, установив свойство backgroundColor в [UIColor clearColor]. Таким образом, вы можете видеть сквозь фон, но все подпредставления останутся непрозрачными. Если вы хотите, чтобы фон был полупрозрачным, просто используйте [UIColor colorWithRed: green: blue: alpha:].

Если вы хотите, чтобы весь вид был полупрозрачным, а другие - нет, вам придется сделать их родными.

2
ответ дан jessecurry 17 October 2009 в 11:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: